The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
Changes 154194
MANIFEST 03
MANIFEST.SKIP 01
META.yml 2628
Makefile.PL 1818
README 11
lib/CPAN/Reporter/API.pod 11
lib/CPAN/Reporter/Config.pm 12
lib/CPAN/Reporter/Config.pod 12
lib/CPAN/Reporter/FAQ.pod 11
lib/CPAN/Reporter/History.pm 11
lib/CPAN/Reporter/History.pod 11
lib/CPAN/Reporter/PrereqCheck.pm 1724
lib/CPAN/Reporter/PrereqCheck.pod 66
lib/CPAN/Reporter.pm 117137
lib/CPAN/Reporter.pod 1313
t/54_test_report_split.t 09
t/Helper.pm 9789
t/dist/NoTestTarget/Build.PL 08
t/dist/NoTestTarget/Makefile.PL 022
t/dist/NoTestTarget/lib/Bogus/Module.pm 06
21 files changed (This is a version diff) 455567
@@ -1,5 +1,45 @@
 Revision history for Perl module CPAN::Reporter
 
+1.1711 Wed Feb 17 13:52:14 EST 2010
+
+  Bugs fixed:
+
+  - Tests for "no make test" were failing due to internationalization
+    of the error message.  Rather than try to interpret every possible
+    make error message, CPAN::Reporter now just looks inside the Makefile
+    for a "test" target.  Hopefully, that will prove more robust.
+
+1.1710 Wed Feb 10 10:30:51 EST 2010
+
+  Bugs fixed:
+
+  - Tests for "no make test" were failing on some systems due to
+    the incredibly wide range of error messages possible from
+    make/nmake/dmake on various systems.  The error message check is
+    now even more liberal.
+
+1.1709 Mon Feb  1 22:39:59 EST 2010
+
+  Bugs fixed:
+
+  - Fixed PrereqCheck for modules like "if.pm" that could be confused
+    with Perl syntax (RT#53477 by Serguei Trouchelle)
+
+  - Added PrereqCheck special-case for Module::Install and improved
+    diagnostics when prereqs are missing or too low (RT#51257)
+
+  - Distributions with no 'make test' target should be UNKNOWN,
+    not FAIL (RT#52139)
+
+  - Improved detection of Test::Reporter capable of setting 'distfile'
+    parameter
+
+  Documentation changes:
+
+  - Added 'Port' example for transport options
+
+  - Adopted new format for Changes
+
 1.1708 Mon Jun  1 23:31:58 EDT 2009
 
     *** Emergency fix -- 1.1706/1.1707 can prevent subsequent module  ***
@@ -13,7 +53,6 @@ Revision history for Perl module CPAN::Reporter
       installation of modules (including newer Test::Reporter); now checks
       for a Test::Reporter
 
-
 1.1707 Sun May 31 21:44:07 EDT 2009
 
     - Prereq: bumped Test::Reporter to 1.54
@@ -35,10 +74,10 @@ Revision history for Perl module CPAN::Reporter
     - Fixed: protect CPAN::Reporter tests from older versions of itself
 
     - Prereq: bumped Devel::Autoflush to 0.04 and CPAN to 1.9301
-    
+
 1.1703 Fri Dec  5 23:06:20 EST 2008
 
-    - Changed: Devel::Autoflush only added to PERL5OPT when capturing 
+    - Changed: Devel::Autoflush only added to PERL5OPT when capturing
       output from Makefile.PL or Build.PL
 
     - Prereq: bumped Devel::Autoflush to 0.03 for various fixes
@@ -47,10 +86,10 @@ Revision history for Perl module CPAN::Reporter
 
     *** Emergency fix -- 1.1701 tickled a new Test::Harness bug ***
 
-    - Changed: reverted to old -I and -M flag order in PERL5OPT; -I flag 
+    - Changed: reverted to old -I and -M flag order in PERL5OPT; -I flag
       only added on Perl 5.8+; this should still fix Perl < 5.8 that can
       only take a single flag without provoking the T::H bug
-    
+
 
 1.1701 Thu Sep 11 23:56:41 EDT 2008
 
@@ -60,13 +99,13 @@ Revision history for Perl module CPAN::Reporter
       'perl' instead of $^X in tests (oh, well...)
 
     - Changed: bumped Test::Reporter prereq to 1.50
-    
+
 1.17 Sat Sep  6 19:35:44 EDT 2008
 
-    - Changed: In line with changes to CPAN Testers grade definitions, 
+    - Changed: In line with changes to CPAN Testers grade definitions,
       failures during the PL or make/Build phase will now be reported as
       UNKNOWN instead of FAIL
-      
+
     - Removed: In line with the CPAN Testers decision to no longer have
       individual testers send reports to authors, the "cc_author" option
       has been removed
@@ -85,7 +124,7 @@ Revision history for Perl module CPAN::Reporter
 1.16_50 Wed Jul 16 09:41:20 EDT 2008
 
     - Added: restored "-I" for PERL5OPT, but to a temporary lib
-      directory containing a copy of Devel::Autoflush.  
+      directory containing a copy of Devel::Autoflush.
 
     - Fixed: enviroment variables section of report now reflects
       PERL5OPT as used during build and testing
@@ -100,24 +139,24 @@ Revision history for Perl module CPAN::Reporter
     - Fixed: timeout support on *nix checks for *both* Proc::Killfam and
       Proc::ProcessTable to protect against unauthorized copies of only
       Proc::Killfam bundled in distributions like Tk-ExecuteCommand
-    
+
 1.16 Fri Jul  4 09:14:52 EDT 2008
 
     - No changes since 1.15_56
 
     - Summary of major features/fixes since 1.15:
 
-        - Added: support for 'configure_requires' in META.yml (adds 
+        - Added: support for 'configure_requires' in META.yml (adds
           Parse::CPAN::Meta as dependency)
 
-        - Fixed: uses Devel::Autoflush to ensure buggy *.PL files that 
+        - Fixed: uses Devel::Autoflush to ensure buggy *.PL files that
           prompt without a newline are always visible through the 'tee'
           pipe
 
-        - Fixed: on Unix, changed command timeout approach to avoid 
-          disconnecting STDIN from the terminal; timeouts now require 
+        - Fixed: on Unix, changed command timeout approach to avoid
+          disconnecting STDIN from the terminal; timeouts now require
           Proc::Killfam on *nix platforms
-          
+
 1.15_56 Thu Jun 19 22:19:33 EDT 2008
 
     - Fixed: when multiple versions of perl are installed, distributions
@@ -129,9 +168,9 @@ Revision history for Perl module CPAN::Reporter
       like it's the tester's fault)
 
     - Documented: removed suggestion to subscribe to cpan-testers since
-      that no longer is necessary now that cpan-testers is just a 
+      that no longer is necessary now that cpan-testers is just a
       drop-box (noted by Jose Luis Martinez)
-    
+
 1.15_55 Mon Jun  9 08:11:01 EDT 2008
 
     - Fixed: catch META.yml parse failures from Parse::CPAN::Meta
@@ -139,16 +178,16 @@ Revision history for Perl module CPAN::Reporter
 
 1.15_54 Fri Jun  6 14:06:57 EDT 2008
 
-    - Fixed: would disconnect from terminal input when running interactively 
+    - Fixed: would disconnect from terminal input when running interactively
       with an inactivity timeout; fixed by avoiding use of setpgrp(), but
-      now requires Proc::Killfam to support inactivity timeouts on non Win32 
+      now requires Proc::Killfam to support inactivity timeouts on non Win32
       platforms. (Bug reported by Andy Armstrong)
 
 1.15_53 Thu Jun  5 06:37:13 EDT 2008
 
     - Fixed: PERL5OPT could was being set with a leading space, which can
       break distributions being tested under Test::Harness
-    
+
 1.15_52 Wed Jun  4 22:23:39 EDT 2008
 
     - Fixed: t/11_env_config.t had a bug that would fail incorrectly if
@@ -162,14 +201,14 @@ Revision history for Perl module CPAN::Reporter
 1.15_50 Tue Jun  3 12:13:12 EDT 2008
 
     - Added: on FAIL reports, now checks for missing configure_requires
-      and discards the report if configure_requires is not satisfied. 
+      and discards the report if configure_requires is not satisfied.
       (Adds Parse::CPAN::Meta as dependency.)
-      
+
     - Fixed: some *.PL files prompt without autoflush, which works
       normally, but appears to silently hang when piping to a tee.
-      CPAN::Reporter now uses Devel::Autoflush in PERL5OPT to always turn 
+      CPAN::Reporter now uses Devel::Autoflush in PERL5OPT to always turn
       on autoflush
-      
+
     - Fixed: distributions with odd names wouldn't be recorded in history;
       now they are recorded as 'DISCARD'
 
@@ -190,11 +229,11 @@ Revision history for Perl module CPAN::Reporter
 1.14_02 Sun Apr  6 09:45:39 EDT 2008
 
     - Changed: improved diagnostics messages for 'transport' failures
-    
+
 1.14_01 Sat Apr  5 18:30:44 EDT 2008
 
     - Changed: if 'transport' configuration option is not valid according
-      to Test::Reporter, no report will be sent instead of falling back 
+      to Test::Reporter, no report will be sent instead of falling back
       to Net::SMTP
 
 1.13 Mon Mar 24 09:22:44 EDT 2008
@@ -210,7 +249,7 @@ Revision history for Perl module CPAN::Reporter
 1.12 Mon Mar 10 08:55:48 EDT 2008
 
     - Added: Win32::FsType() to special variables section of report
-    
+
     - Added: diagnostic warning if PrereqCheck output can't be parsed
 
 1.11 Mon Feb 25 18:47:03 EST 2008
@@ -219,7 +258,7 @@ Revision history for Perl module CPAN::Reporter
       were mistakenly being marked as 'DISCARD' for the PL phase.  Fixed so
       that PL's that PASS will stay that way regardless of prerequisites.
       (This does not prevent a later make or test failure from being
-      downgraded, 
+      downgraded,
 
     - Bug fix: skipfiles patterns should match case-insensitive (Cantrell);
       also, documented lack of starting anchor
@@ -235,22 +274,22 @@ Revision history for Perl module CPAN::Reporter
 
     - Bug fix (sort of): On Win32, child processes were not timing out.
       Changed from Win32::Process to Win32::Job to fix that.  However,
-      discovered that process termination on Win32 can deadlock in some 
+      discovered that process termination on Win32 can deadlock in some
       cases, so timeout testing on Win32 will now skip unless
       $ENV{PERL_AUTHOR_TESTING} is set. Added warning to documentation.
 
     - Bug fix: On a Win32 virtual machine (VirtualBox), handles for output
       capture were not inherited by child processes, which caused Test::Harness
       to crash for some reason.
-    
+
 1.09 Mon Feb 18 22:10:55 EST 2008
-    
+
     - Simplified and shortened boilerplate
 
     - Bug fix (minor): better detection of make vs Build for progress
       messages
-    
-    - Test fix: skip interrupt testing on MSWin32 if Win32::Process 
+
+    - Test fix: skip interrupt testing on MSWin32 if Win32::Process
       is not installed
 
 1.0801 Sun Feb 10 00:27:05 EST 2008
@@ -264,14 +303,14 @@ Revision history for Perl module CPAN::Reporter
 
     - Summary of new features since 1.06:
 
-        - Added have_tested() function to CPAN::Reporter::History    
+        - Added have_tested() function to CPAN::Reporter::History
 
         - Added 'cc_skipfile' and 'send_skipfile' advanced config options
 
         - Added 'command_timeout' advanced config option
 
         - Added support for PERL_CPAN_REPORTER_DIR and
-          PERL_CPAN_REPORTER_CONFIG environment variables 
+          PERL_CPAN_REPORTER_CONFIG environment variables
 
 1.07_06 Fri Jan 25 11:27:28 EST 2008
 
@@ -279,20 +318,20 @@ Revision history for Perl module CPAN::Reporter
 
     - Added detection of commands killed with a signal; reports are discarded
       (N.B. this may change in a future version)
-    
-    - Bug fix: processes timing out could still hang with child processes 
+
+    - Bug fix: processes timing out could still hang with child processes
       (killing 'make test' still leaves the harness running); fixed by making
       'make test' its own process group and killing the process group; hoping
       that's portable across non-Win32; Win32 timeouts use Win32::Process and
       do the right thing already
-    
+
     - Downgraded lots of progress messages from CPAN's 'mywarn' to 'myprint'
       (from red to blue if you use CPAN's colored output)
 
 1.07_05 Thu Jan 24 08:27:48 EST 2008
 
     - Added PERL_CPAN_REPORTER_DIR and PERL_CPAN_REPORTER_CONFIG environment
-      variables to specify alternate locations for default configuration 
+      variables to specify alternate locations for default configuration
       directory and file (RT#30314)
 
     - Removed File::Temp as a full prerequisite; now only used in testing
@@ -301,11 +340,11 @@ Revision history for Perl module CPAN::Reporter
 1.07_04 Sun Jan 20 22:06:56 EST 2008
 
     - Test fix: stopping cc on blead broke lots of other tests.  Fixed those.
-      Built my own blead perl so I can actually check these things in the 
+      Built my own blead perl so I can actually check these things in the
       future instead of relying on Andreas' blead smoking
-    
-    - Test fix: testing skipfile wasn't being created properly on Perl 5.005 
-    
+
+    - Test fix: testing skipfile wasn't being created properly on Perl 5.005
+
 1.07_03 Sat Jan 19 22:16:44 EST 2008
 
     - Test fix: set sample history file writeable after copy
@@ -314,11 +353,11 @@ Revision history for Perl module CPAN::Reporter
 
     - Added have_tested() function to CPAN::Reporter::History; provide ability
       to search the CPAN::Reporter history file
-    
+
     - Bug fix: PL files that warned "OS Unsupported" and exited with 0 will
       now be flagged as NA; this bends the CPAN Testers "rules" slightly, but
       "OS Unsupported" is a hack anyway, so this should help things DWIM
-    
+
     - Test fix: more changes to timeout testing to avoid false failures
 
     - Authors will never be CC'd on reports when running maint/blead perl
@@ -327,26 +366,26 @@ Revision history for Perl module CPAN::Reporter
     - Reports discarded due to missing prerequisites will now be recorded
       in the history file with a 'grade' of DISCARD (unless a duplicate
       DISCARD already exists)
-    
+
     - Changed "edit_report" prompt to clarify this can be used to review
       reports in addition to just editing them
 
     - Shortened duplicate report warning to fit on one line
-    
+
 1.07_01 Tue Jan  8 01:41:02 EST 2008
 
-    - Added "cc_skipfile" and "send_skipfile" advanced config options to 
-      specify a text file of regex patterns; if a distribution ID 
-      ('AUTHOR/Dist-Name-0.01.tar.gz') matches any pattern in the file, the 
-      author will not be copied on the report (cc_skipfile) or no reports 
+    - Added "cc_skipfile" and "send_skipfile" advanced config options to
+      specify a text file of regex patterns; if a distribution ID
+      ('AUTHOR/Dist-Name-0.01.tar.gz') matches any pattern in the file, the
+      author will not be copied on the report (cc_skipfile) or no reports
       will be sent at all (skip_sendfile)
-      
+
 1.0602 Tue Dec 25 08:59:07 EST 2007
 
     - Test fix: a timeout test would sometimes appear to fail on a highly
-      loaded system; changed the runtime and timeout timings to try to 
+      loaded system; changed the runtime and timeout timings to try to
       prevent false failures; added better diagnostic output
-    
+
 1.0601 Tue Dec 11 12:19:25 EST 2007
 
     - Test fix: Test::Harness 3.05 fixed a long standing bug; the fix
@@ -357,52 +396,52 @@ Revision history for Perl module CPAN::Reporter
     - Bug fix: if older versions of a module are in multiple
       locations in @INC, CPAN::Reporter could detect the older version
       instead of the newer one; fixed in CPAN::Reporter::PrereqCheck
-      (RT#30345; additional investigation by Andy Armstrong) 
+      (RT#30345; additional investigation by Andy Armstrong)
 
     - Bug fix: "our $VERSION" check still wasn't working on 5.005; now
-      fixed (reported by Slaven Rezic).  Note, this situation only 
-      applies to Module::Build <= 0.2808, where Build.PL dies before a 
+      fixed (reported by Slaven Rezic).  Note, this situation only
+      applies to Module::Build <= 0.2808, where Build.PL dies before a
       legitimate "require => { perl => 5.006 }" is processed. (Makefile.PL
-      does not die in this situation and Makefile.PL has no way of 
+      does not die in this situation and Makefile.PL has no way of
       signaling a required perl version other than "use 5.006" or equivalent
       in the Makefile.PL)
 
     - Bug fix: wasn't printing Test::Reporter error message if a report
       couldn't be sent (RT#30730 by BLOONIX)
-     
+
     - Changed FAIL report boilerplate about CPAN::Testers wiki to be
-      more explicit that the wiki teaches how to deal with dependencies, OS, 
+      more explicit that the wiki teaches how to deal with dependencies, OS,
       etc. (suggested by Olly Betts)
 
 1.05 Tue Nov  6 14:41:48 EST 2007
 
-    - Added checks for Makefile.PL/Build.PL dying early on Perl < 5.6 if 
+    - Added checks for Makefile.PL/Build.PL dying early on Perl < 5.6 if
       modules define their version using "our $VERSION"; such cases will
       be graded NA (RT#30299; report and partial patch from Slaven Rezic)
 
     - Added author's email address to the prompt question for whether to
-      CC the author.  Also fixed typo in the prompt. 
+      CC the author.  Also fixed typo in the prompt.
       (suggested by Slaven Rezic)
 
-    - Added "CPAN::Reporter" consistently as a prefix to all console 
+    - Added "CPAN::Reporter" consistently as a prefix to all console
       messages to distinguish them from messages from CPAN.pm. Noisy, but
       helps track errors/complaints to the right source.
-      
+
     - Bug fix: on first installation, "reload cpan" might load CPAN::Reporter
-      when an old version File::Temp is already loaded; added an explicit 
+      when an old version File::Temp is already loaded; added an explicit
       version check on File::Temp (reported by Andreas Koenig)
 
 1.04 Fri Oct 26 06:56:32 EDT 2007
-    
+
     - Bug fix: temp files were being created in the current directory,
       not the File::Spec->tmpdir() directory; this broke distributions
-      that used their own distribution directory for signature or 
+      that used their own distribution directory for signature or
       MANIFEST checks
 
 1.03 Wed Oct 24 17:13:59 EDT 2007
 
     - Added a check for prerequisites that are present but fail to load;
-      in such a case the prereq "have" field will show "broken" (e.g a 
+      in such a case the prereq "have" field will show "broken" (e.g a
       dependency of that module is missing)
 
     - Refactored prerequisite checking code into a separate modulino
@@ -423,10 +462,10 @@ Revision history for Perl module CPAN::Reporter
       being properly escaped in creation of the wrapper script
       (found by Andreas Koenig)
 
-    - Bug fix: wasn't detecting Perl version too low during make/Build 
+    - Bug fix: wasn't detecting Perl version too low during make/Build
       phase.  Reports were improperly graded as 'FAIL' instead of 'NA'
       (found by Slaven Rezic and David Cantrell)
-   
+
     - Bug fix: wasn't detecting missing prerequisites during "make" phase
       and FAIL reports were being sent that should have been discarded
       (found by Michel Rodriguez and David Cantrell)
@@ -445,13 +484,13 @@ Revision history for Perl module CPAN::Reporter
 
     Summary of major changes from 0.XX series:
 
-    * Added support for reporting for *.PL and make/Build stages; bumped 
+    * Added support for reporting for *.PL and make/Build stages; bumped
       CPAN.pm prerequisite to 1.9203 to take advantage of this support
 
-    * Added support for the forthcoming Test::Harness 3.00 
-    
-    * Changed the name and format of the history file of sent reports to 
-      track history by PL/make/test phase.  Old history.db will be 
+    * Added support for the forthcoming Test::Harness 3.00
+
+    * Changed the name and format of the history file of sent reports to
+      track history by PL/make/test phase.  Old history.db will be
       automatically upgraded to new reports-sent.db.
 
     * Moved 'cc_author' and 'send_duplicates' options from interactive
@@ -481,7 +520,7 @@ Revision history for Perl module CPAN::Reporter
       by perl.org's MX and to avoid excessive output in general
       (MX limitation noted by Slaven Rezic)
 
-    - Added documentation note in History.pm that all methods are 
+    - Added documentation note in History.pm that all methods are
       currently private
 
     - Removed API.pm and FAQ.pm from MANIFEST and tarball -- these are
@@ -490,13 +529,13 @@ Revision history for Perl module CPAN::Reporter
 0.99_14 Tue Oct  2 14:49:40 EDT 2007
 
     * Bumped CPAN.pm prereq to 1.9203 -- fixes a bug where make/build
-      continues even if Makefile/Build is missing, causing FAIL 
+      continues even if Makefile/Build is missing, causing FAIL
       reports for modules that exit(0) without generating a Makefile.
 
     - Set transport() default to Net::SMTP; ensures CPAN::Reporter can
-      work out-of-the-box on systems that happen to have Mail::Send and 
+      work out-of-the-box on systems that happen to have Mail::Send and
       a broken sendmail installation
-    
+
     - eliminated several Perl::Critic level 4-5 complaints
 
     - added some entries to the FAQ
@@ -506,8 +545,8 @@ Revision history for Perl module CPAN::Reporter
     * Bump Test::Reporter prereq to 1.34 for transport() method.  Added
       "transport" advanced configuration option.
       (Requested by Andreas Koenig)
-      
-    - Improved robustness of conversion of old history files on Win32 for 
+
+    - Improved robustness of conversion of old history files on Win32 for
       really old CPAN::Reporter history formats
 
     - Minor report format tweaks
@@ -522,13 +561,13 @@ Revision history for Perl module CPAN::Reporter
 
     - Added perl version to the report intro paragraph since otherwise it
       doesn't appear until the "perl -V" output at the end of the report
-    
+
     - Compressed UID/EUID variables to a single line in the report
 
     - Made report language less 'test' specific, since we can also report
       on PL or make failures
 
-    - Changed the way perl version is stringified for history file entries to 
+    - Changed the way perl version is stringified for history file entries to
       workaround an old bleadperl bug; (a "better safe than sorry" fix)
       (Reported by Andreas Koenig)
 
@@ -552,7 +591,7 @@ Revision history for Perl module CPAN::Reporter
 
 0.99_08 Sat Sep  8 18:07:08 EDT 2007
 
-    * History file of sent reports has a new name ('reports-sent.db') and a 
+    * History file of sent reports has a new name ('reports-sent.db') and a
       new format with phase of testing for report ('PL', 'make', 'test')
 
     - More robust check for Test::Harness 2.99_01 (works even with out-of-date
@@ -574,7 +613,7 @@ Revision history for Perl module CPAN::Reporter
     - Changed grading for test files with no output from FAIL to UNKNOWN to
       harmonize with new Test::Harness approach
 
-    - Falls back to overall 'make test' exit code for success or failure if 
+    - Falls back to overall 'make test' exit code for success or failure if
       recursive Makefile.PL's are detected; File::Find added to prereqs;
       Bumped EU::MM prereq to 6.36 to get bug fixes for recursion and more
 
@@ -591,7 +630,7 @@ Revision history for Perl module CPAN::Reporter
 
     - Fixed copy/paste typo that caused testing to fail; (serves me right
       for rushing out 0.99_04 without using my normal release-testing script)
-    
+
 0.99_04 Mon Aug 27 07:40:59 EDT 2007
 
     - Merged changes from 0.4801
@@ -612,7 +651,7 @@ Revision history for Perl module CPAN::Reporter
     - Reordered Changes to be chronological
 
 0.48 Tue Aug  7 16:28:42 EDT 2007
- 
+
     - Bumped Test::More prereq to 0.62 (from 0.99_02)
 
     - More portable directory checks in test helper module
@@ -630,26 +669,26 @@ Revision history for Perl module CPAN::Reporter
     - Bumped Test::More prereq to 0.62
 
 0.47_01 Sat Aug  4 00:09:54 EDT 2007
- 
+
     - Added TEMP and TMPDIR to environment variables included in report
 
-    - Changed inclusion of AUTHOR_TESTING environment variable 
+    - Changed inclusion of AUTHOR_TESTING environment variable
       to any matching /AUTHOR_TEST/
-    
+
     - Changed how "Build.PL" is executed in tests to diagnose odd Cygwin
       failure; increased test diagnostics
 
 0.99_01 Tue Jul 31 22:28:25 EDT 2007
-    
+
     * Major API additions and configuration changes in preparation for
-      adding Makefile/Build.PL and make/Build support into CPAN.pm 
+      adding Makefile/Build.PL and make/Build support into CPAN.pm
 
         * Deprecated test() function; test() separated into record_command()
           and grade_test() functions to support CPAN.pm sending
           reports from output generated indpendently from CPAN::Reporter,
           e.g. CPAN.pm using Expect with distroprefs
 
-        * Added record_command() to wrap and tee a system() command and 
+        * Added record_command() to wrap and tee a system() command and
           return results for further evaluation in grade_*() functions;
           wrapping used to capture exit values that would otherwise be lost
           from pipe to tee; will support CPAN inactivity timouts on both *nix
@@ -664,7 +703,7 @@ Revision history for Perl module CPAN::Reporter
 
         * Added grade_test() function to evaluate results of 'make test'
           or 'Build test' (refactored from old test() function)
-        
+
         * Removed 'cc_author' and 'send_duplicates' options from normal
           interactive configuration; defaults will be used unless set
           manually in the configuration file
@@ -675,79 +714,79 @@ Revision history for Perl module CPAN::Reporter
     - added YAML & YAML::Syck to list of toolchain module versions
       reported (i.e. determines if META.yml is used by CPAN.pm)
 
-    - began refactoring configuration code: moved configuration 
+    - began refactoring configuration code: moved configuration
       defaults and validation into Config.pm
 
     - fixed bug in distribution-version string creation for .tar.bz2
 
 0.46 Tue Jul 17 22:05:50 EDT 2007
-    
+
     *** Significant improvements to NA report handling ***
-        
+
         * Changes as per CPAN Testers specifications from Barbie
         * NA reports should now be sent to CPAN Testers instead of discarded
 
     - Tests that fail with 'OS Unsupported' or 'No support for OS' are
       now correctly identified as NA
-    
-    - FAIL/UNKNOWN grades results with unsatisfied prerequisites are 
-      discarded immediately instead of being flagged as NA 
-    
-    - changed default configurations to automatically send NA just like PASS 
-    
+
+    - FAIL/UNKNOWN grades results with unsatisfied prerequisites are
+      discarded immediately instead of being flagged as NA
+
+    - changed default configurations to automatically send NA just like PASS
+
     - interactive configuration now always shows recommended options
       in addition to any prior configuration
-    
+
     - added CPAN Testers website and wiki to SEE ALSO in docs
-    
+
     - improved tests for detecting reports sent/not-sent
 
 0.45 Tue Jul  3 17:07:30 EDT 2007
-    
+
     - distribution tests that bailout now detected as FAIL instead of UNKNOWN
-    
+
     - UNKNOWN results when prereqs are missing are downgraded to NA
       (just like FAIL reports with missing prereqs already were)
 
 0.44 Sun Jun 17 22:05:46 EDT 2007
-    
+
     - searches through duplicate history file instead of loading as a hash
-    
-    - added flocking to history file read/write 
+
+    - added flocking to history file read/write
       (and faked it for platforms that don't support flock)
-    
+
     - duplicate history includes $Config{perl_patchlevel} if it exists
 
 0.43 Tue Apr 24 22:55:32 EDT 2007
-    
+
     - enhanced duplicate tracking to include Perl version (suggested by
       David Cantrell)
-    
+
 0.42 Tue Apr 24 00:27:56 EDT 2007
-    
+
     - added "send_duplicates" option with default "no"; compares CPAN Testers
       subject lines (grade, distribution, version and platform) to previous
       test results and skips sending duplicate reports
-      
+
 0.41 Sun Mar 25 09:39:07 EDT 2007
-    
+
     - test reports will not be sent if the distribution name doesn't appear
       appear to be an actual distribution with version and archive suffix
       (Suggested by Barbie)
-    
+
     - refactored tests
-    
+
     - fixed ID format in mock CPAN::Distributions used in testing
 
 0.40 Wed Feb 28 23:30:13 EST 2007
-    
+
     - eliminated Perl::Critic level 5 and (most) level 4 complaints
-    
+
     - added defensive code in case CPAN.pm can't provide a valid Author
       object (Reported by David Cantrell)
-    
+
 0.39 Sat Feb 10 19:28:13 EST 2007
-    
+
     - changed prereq version testing to better match approach used
       by CPAN.pm
 
@@ -765,7 +804,7 @@ Revision history for Perl module CPAN::Reporter
     - changed default for send_report to "no" for "na" reports to avoid
       sending spurious reports from prerequisites failures
 
-    - customized email report intros for better help to module authors 
+    - customized email report intros for better help to module authors
       receiving a CC for various types of reports
 
     - removed email address for RT to reduce spam
@@ -826,7 +865,7 @@ Revision history for Perl module CPAN::Reporter
       impact on parsing
 
     - changed default action for edit_report and send_report to "no" and "yes"
-      respectively if the grade is pass to avoid holding up successful 
+      respectively if the grade is pass to avoid holding up successful
       installations. (Suggested by Michael Schwern)
 
     - changed several tests to always mock configuration directory; prevents
@@ -841,14 +880,14 @@ Revision history for Perl module CPAN::Reporter
 
     *** Backward compatibility warning: configuration options have changed and
     config directory on OS X has changed ***
-    
+
     - changed config directory on Mac OS X to ~/.cpanreporter instead of
       ~/Documents/.cpanreporter to be more like Unix; automatically moves
       config file if old directory is detected. (RT#22120)
 
     - changed action prompt configuration option format to support grade-
       specific actions (RT#21690)
-    
+
     - fixed success/failure parsing when recursive make output is included;
       line parsing is now done in reverse and only the first matching line
       is used
@@ -859,21 +898,21 @@ Revision history for Perl module CPAN::Reporter
       matches from recursive makes
 
     - added tests for report output format
-    
+
 0.28 Sun Oct  8 12:47:46 EDT 2006
 
-    - fixed test programs to force cleanup temp directories 
+    - fixed test programs to force cleanup temp directories
       (due to bug in File::Temp)
 
 0.27 Wed Oct  4 14:04:08 EDT 2006
 
     *** Emergency bug fix ***
-    
+
     - fixed fatal bug in prereq collection from some versions of CPAN.pm
 
 0.26 Wed Oct  4 09:25:08 EDT 2006
 
-    - fixed prereq tests: requiring "0" will now pass for modules with no 
+    - fixed prereq tests: requiring "0" will now pass for modules with no
       $VERSION defined (will show that version '0' is installed)
 
     - fixed prereq tests for version.pm and bleadperl expansion of
@@ -887,7 +926,7 @@ Revision history for Perl module CPAN::Reporter
     - fixed prereq testing: tests are conducted in a perl subprocess to use
       same $ENV{PERL5LIB} as used for testing itself; necessary to support
       prerequisites that may be tested by CPAN.pm but not yet installed
-      
+
     - added special logic for perl prerequisite version checks now that
       CPAN.pm passes it along
 
@@ -896,7 +935,7 @@ Revision history for Perl module CPAN::Reporter
 0.24 Sun Oct  1 04:27:51 EDT 2006
 
     *** Emergency bug fix ***
-    
+
     - added a dummy file to t/dist/NoTestFiles/t to ensure the directory
       is included in the distribution manifest and tarball; otherwise
       NoTestFiles tests fail
@@ -918,10 +957,10 @@ Revision history for Perl module CPAN::Reporter
     - changed prerequisites report for easier reading and to show requires
       and build_requires individually, if available from CPAN.pm
 
-    - changed test.pl test grading under ExtUtils::MakeMaker from output 
-      parsing to determining the success or failure of a separate run of 
+    - changed test.pl test grading under ExtUtils::MakeMaker from output
+      parsing to determining the success or failure of a separate run of
       Makefile
-      
+
 0.21 Thu Sep 28 07:06:30 EDT 2006
 
     - added test.pl support with full capture of output (Tim Bunce)
@@ -930,7 +969,7 @@ Revision history for Perl module CPAN::Reporter
       Perl version is too low
 
     - refactored tests into separate files by grade
-    
+
 0.20 Sun Sep 24 22:45:48 EDT 2006
 
     - fixed RT#21626: "unknown" results will now be reported to CPAN.pm as
@@ -955,14 +994,14 @@ Revision history for Perl module CPAN::Reporter
 
     - added workaround for a bizarre VERSION() method confict when
       Module::Signature is installed on older Perls (Andreas Konig)
-      
+
     - added note about location of config files for Mac OS X (SKUO)
 
     - updated "Getting Started" Pod now that CPAN 1.88 is out
 
 0.17 Sat Sep  9 07:11:08 EDT 2006
 
-    - changed t/03_test_report.t to skip Module::Build tests if 
+    - changed t/03_test_report.t to skip Module::Build tests if
       Module::Build is not installed
 
 0.16 Fri Sep  8 07:19:25 EDT 2006
@@ -970,7 +1009,7 @@ Revision history for Perl module CPAN::Reporter
     - fixed file mode bug in t/02_config_file_t (Slaven Rezic)
 
     - added first regression tests for pass/fail
-    
+
 0.15 Wed Sep  6 19:23:32 EDT 2006
 
     - fixed broken test() -- all tests were reporting failed
@@ -978,25 +1017,25 @@ Revision history for Perl module CPAN::Reporter
 0.14 Wed Sep  6 15:53:52 EDT 2006
 
     - added configure() for config file generation and interactive config
-    
+
     - removed automatic config file generation from the test() function
-    
-    - updated getting started documentation to reflect CPAN.pm 
+
+    - updated getting started documentation to reflect CPAN.pm
       'o conf init test_report' syntax (as of 1.87_59) and new
       interactive config feature of CPAN::Reporter
-    
-    - added the 'fail' config value; equivalent to 'yes' if a test failed 
-      and 'no' otherwise 
-    
+
+    - added the 'fail' config value; equivalent to 'yes' if a test failed
+      and 'no' otherwise
+
     - changed "cc_author" default to "fail"
-    
+
     - added error checks and testing for config file generation
 
 0.13 Tue Aug 29 06:31:38 EDT 2006
 
-    - added slightly more verbose progress messages, including for CC's and 
+    - added slightly more verbose progress messages, including for CC's and
       for reports not sent
-    
+
     - minor documentation improvements
 
 0.12 Sat Aug 26 19:05:54 EDT 2006
@@ -1007,14 +1046,14 @@ Revision history for Perl module CPAN::Reporter
 
     - fail-safe test.pl files -- can't determine success for "make test"
       when teed and can't parse for Test::Harness output
-    
-    - fail-safe output parsing -- if the expected failure string from 
+
+    - fail-safe output parsing -- if the expected failure string from
       Test::Harness is not found, report "unknown" instead of fail
-    
+
     - added compatibility for CPAN.pm "reload cpan" command (Andreas Konig)
-    
+
     - added options "debug" and "editor" (Andreas Konig)
-    
+
     - bumped Tee version requirement
 
 0.10 Tue Aug  8 23:56:07 EDT 2006
@@ -1022,3 +1061,4 @@ Revision history for Perl module CPAN::Reporter
     - first public release -- support not yet available in CPAN.pm
       main branch
 
+# vi:tw=75
@@ -96,6 +96,9 @@ t/dist/NoTestFiles/Build.PL
 t/dist/NoTestFiles/lib/Bogus/Module.pm
 t/dist/NoTestFiles/Makefile.PL
 t/dist/NoTestFiles/t/README
+t/dist/NoTestTarget/Build.PL
+t/dist/NoTestTarget/lib/Bogus/Module.pm
+t/dist/NoTestTarget/Makefile.PL
 t/dist/PL-ConfigRequires/Build.PL
 t/dist/PL-ConfigRequires/lib/Bogus/Module.pm
 t/dist/PL-ConfigRequires/Makefile.PL
@@ -38,3 +38,4 @@
 \.swp$
 \.bak$
 \.tmp$
+^MYMETA
@@ -1,12 +1,32 @@
 ---
-name: CPAN-Reporter
-version: 1.1708
+abstract: 'Adds CPAN Testers reporting to CPAN.pm'
 author:
   - 'David A. Golden <dagolden@cpan.org>'
-abstract: Adds CPAN Testers reporting to CPAN.pm
+configure_requires:
+  Module::Build: 0.36
+generated_by: 'Module::Build version 0.3603'
 license: apache
-resources:
-  license: http://www.apache.org/licenses/LICENSE-2.0.txt
+meta-spec:
+  url: http://module-build.sourceforge.net/META-spec-v1.4.html
+  version: 1.4
+name: CPAN-Reporter
+no_index:
+  directory:
+    - examples
+    - inc
+provides:
+  CPAN::Reporter:
+    file: lib/CPAN/Reporter.pm
+    version: 1.1711
+  CPAN::Reporter::Config:
+    file: lib/CPAN/Reporter/Config.pm
+    version: 1.1711
+  CPAN::Reporter::History:
+    file: lib/CPAN/Reporter/History.pm
+    version: 1.1711
+  CPAN::Reporter::PrereqCheck:
+    file: lib/CPAN/Reporter/PrereqCheck.pm
+    version: 1.1711
 requires:
   CPAN: 1.9301
   Config::Tiny: 2.08
@@ -26,24 +46,6 @@ requires:
   Tee: 0.13
   Test::More: 0.62
   Test::Reporter: 1.54
-provides:
-  CPAN::Reporter:
-    file: lib/CPAN/Reporter.pm
-    version: 1.1708
-  CPAN::Reporter::Config:
-    file: lib/CPAN/Reporter/Config.pm
-    version: 1.1708
-  CPAN::Reporter::History:
-    file: lib/CPAN/Reporter/History.pm
-    version: 1.1708
-  CPAN::Reporter::PrereqCheck:
-    file: lib/CPAN/Reporter/PrereqCheck.pm
-    version: 1.1708
-generated_by: Module::Build version 0.33
-meta-spec:
-  url: http://module-build.sourceforge.net/META-spec-v1.4.html
-  version: 1.4
-no_index:
-  directory:
-    - examples
-    - inc
+resources:
+  license: http://www.apache.org/licenses/LICENSE-2.0.txt
+version: 1.1711
@@ -1,31 +1,31 @@
-# Note: this file was auto-generated by Module::Build::Compat version 0.33
+# Note: this file was auto-generated by Module::Build::Compat version 0.3603
 use ExtUtils::MakeMaker;
 WriteMakefile
 (
-          'PL_FILES' => {},
-          'INSTALLDIRS' => 'site',
           'NAME' => 'CPAN::Reporter',
-          'EXE_FILES' => [],
           'VERSION_FROM' => 'lib/CPAN/Reporter.pm',
           'PREREQ_PM' => {
-                           'IO::CaptureOutput' => '1.03',
-                           'File::Spec' => '3.19',
-                           'Probe::Perl' => 0,
+                           'CPAN' => '1.9301',
+                           'Config::Tiny' => '2.08',
+                           'Devel::Autoflush' => '0.04',
+                           'ExtUtils::MakeMaker' => '6.36',
+                           'File::Basename' => 0,
+                           'File::Copy::Recursive' => '0.35',
                            'File::Find' => 0,
-                           'Test::Reporter' => '1.54',
+                           'File::HomeDir' => '0.58',
                            'File::Path' => 0,
-                           'Parse::CPAN::Meta' => 0,
+                           'File::Spec' => '3.19',
+                           'File::Temp' => '0.16',
                            'File::pushd' => '0.32',
-                           'File::HomeDir' => '0.58',
-                           'ExtUtils::MakeMaker' => '6.36',
-                           'Devel::Autoflush' => '0.04',
+                           'IO::CaptureOutput' => '1.03',
+                           'Parse::CPAN::Meta' => 0,
+                           'Probe::Perl' => 0,
                            'Tee' => '0.13',
                            'Test::More' => '0.62',
-                           'File::Temp' => '0.16',
-                           'File::Copy::Recursive' => '0.35',
-                           'CPAN' => '1.9301',
-                           'File::Basename' => 0,
-                           'Config::Tiny' => '2.08'
-                         }
+                           'Test::Reporter' => '1.54'
+                         },
+          'INSTALLDIRS' => 'site',
+          'EXE_FILES' => [],
+          'PL_FILES' => {}
         )
 ;
@@ -2,7 +2,7 @@ NAME
     CPAN::Reporter - Adds CPAN Testers reporting to CPAN.pm
 
 VERSION
-    This documentation describes version 1.1708.
+    This documentation describes version 1.1711.
 
 SYNOPSIS
     From the CPAN shell:
@@ -8,7 +8,7 @@ CPAN::Reporter::API - Programmer's interface to CPAN::Reporter
 
 =head1 VERSION
 
-This documentation refers to version 1.1708
+This documentation refers to version 1.1711
 
 =head1 FUNCTIONS
 
@@ -1,7 +1,7 @@
 package CPAN::Reporter::Config;
 use strict; 
 use vars qw/$VERSION/;
-$VERSION = '1.1708'; 
+$VERSION = '1.1711';
 $VERSION = eval $VERSION; ## no critic
 
 use Config::Tiny ();
@@ -710,6 +710,7 @@ set the 'transport' config option to the name of the transport module
 (without the 'Test::Reporter::Transport' prefix) and any required arguments,
 separated by white space. For example:
 
+  transport=Net::SMTP Port 587
   transport=Net::SMTP::TLS User jdoe@example.com Password 12345
   transport=HTTPGateway http://example.com/cpantesters.cgi MyKey
   transport=File ~/saved-reports-dir
@@ -8,7 +8,7 @@ CPAN::Reporter::Config - Config file options for CPAN::Reporter
 
 =head1 VERSION
 
-This documentation refers to version 1.1708
+This documentation refers to version 1.1711
 
 =head1 SYNOPSIS
 
@@ -260,6 +260,7 @@ set the 'transport' config option to the name of the transport module
 (without the 'Test::Reporter::Transport' prefix) and any required arguments,
 separated by white space. For example:
 
+   transport=Net::SMTP Port 587
    transport=Net::SMTP::TLS User jdoe@example.com Password 12345
    transport=HTTPGateway http://example.com/cpantesters.cgi MyKey
    transport=File ~/saved-reports-dir
@@ -8,7 +8,7 @@ CPAN::Reporter::FAQ - Answers and tips for using CPAN::Reporter
 
 =head1 VERSION
 
-This documentation refers to version 1.1708
+This documentation refers to version 1.1711
 
 =head1 REPORT GRADES
 
@@ -1,7 +1,7 @@
 package CPAN::Reporter::History;
 use strict; 
 use vars qw/$VERSION @ISA @EXPORT_OK/;
-$VERSION = '1.1708'; 
+$VERSION = '1.1711';
 $VERSION = eval $VERSION; ## no critic
 
 use Config;
@@ -8,7 +8,7 @@ CPAN::Reporter::History - Read or write a CPAN::Reporter history log
 
 =head1 VERSION
 
-This documentation refers to version 1.1708
+This documentation refers to version 1.1711
 
 =head1 SYNOPSIS
 
@@ -1,36 +1,43 @@
 package CPAN::Reporter::PrereqCheck;
 use strict;
 use vars qw/$VERSION/;
-$VERSION = '1.1708'; 
+$VERSION = '1.1711';
 $VERSION = eval $VERSION; ## no critic
 
 use ExtUtils::MakeMaker;
 use File::Spec;
 use CPAN::Version;
 
+my %substitute = (
+  'Module::Install' => 'inc::Module::Install',
+);
+
 _run() if ! caller();
 
 sub _run {
     my %saw_mod;
     # read module and prereq string from STDIN
     local *DEVNULL;
-    open DEVNULL, ">" . File::Spec->devnull; 
+    open DEVNULL, ">" . File::Spec->devnull;
     while ( <> ) {
         m/^(\S+)\s+([^\n]*)/;
         my ($mod, $need) = ($1, $2);
         die "Couldn't read module for '$_'" unless $mod;
         $need = 0 if not defined $need;
-        
+
+        # handle any odd cases
+        my $testmod = $substitute{$mod} || $mod;
+
         # only evaluate a module once
-        next if $saw_mod{$mod}++;
+        next if $saw_mod{$testmod}++;
 
         # get installed version from file with EU::MM
         my($have, $inst_file, $dir, @packpath);
-        if ( $mod eq "perl" ) { 
+        if ( $testmod eq "perl" ) {
             $have = $];
         }
         else {
-            @packpath = split( /::/, $mod );
+            @packpath = split( /::/, $testmod );
             $packpath[-1] .= ".pm";
             if (@packpath == 1 && $packpath[0] eq "readline.pm") {
                 unshift @packpath, "Term", "ReadLine"; # historical reasons
@@ -43,15 +50,15 @@ sub _run {
                     last INCDIR;
                 }
             }
-            
+
             # get version from file or else report missing
             if ( defined $inst_file ) {
                 $have = MM->parse_version($inst_file);
                 $have = "0" if ! defined $have || $have eq 'undef';
                 # report broken if it can't be loaded
                 # "select" to try to suppress spurious newlines
-                select DEVNULL; ## no critic 
-                if ( ! eval "require $mod" ) {
+                select DEVNULL; ## no critic
+                if ( ! eval "use $testmod (); 1" ) {
                     select STDOUT; ## no critic
                     print "$mod 0 broken\n";
                     next;
@@ -68,7 +75,7 @@ sub _run {
         my ( @requirements ) = split /\s*,\s*/, $need;
 
         my $passes = 0;
-        RQ: 
+        RQ:
         for my $rq (@requirements) {
             if ($rq =~ s|>=\s*||) {
                 # no-op -- just trimmed string
@@ -78,7 +85,7 @@ sub _run {
                 }
                 next RQ;
             } elsif ($rq =~ s|!=\s*||) {
-                if (CPAN::Version->vcmp($have,$rq)) { 
+                if (CPAN::Version->vcmp($have,$rq)) {
                     $passes++; # didn't match
                 }
                 next RQ;
@@ -109,7 +116,7 @@ sub _run {
 __END__
 
 #--------------------------------------------------------------------------#
-# pod documentation 
+# pod documentation
 #--------------------------------------------------------------------------#
 
 =begin wikidoc
@@ -140,16 +147,16 @@ It reads a module name and prerequisite string pair from each line of input
 and prints out the module name, 0 or 1 depending on whether the prerequisite
 is satisifed, and the installed module version.  If the module is not
 available, it will print "n/a" for the version.  If the module is available
-but can't be loaded, it will print "broken" for the version.  Modules 
+but can't be loaded, it will print "broken" for the version.  Modules
 without a version will be treated as being of version "0".
 
-No user serviceable parts are inside.  This modulino is packaged for 
+No user serviceable parts are inside.  This modulino is packaged for
 internal use by CPAN::Reporter.
 
 = BUGS
 
-Please report any bugs or feature using the CPAN Request Tracker.  
-Bugs can be submitted through the web interface at 
+Please report any bugs or feature using the CPAN Request Tracker.
+Bugs can be submitted through the web interface at
 [http://rt.cpan.org/Dist/Display.html?Queue=CPAN-Reporter]
 
 When submitting a bug or request, please include a test-file or a patch to an
@@ -169,7 +176,7 @@ Copyright (c) 2006, 2007 by David A. Golden
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
-You may obtain a copy of the License at 
+You may obtain a copy of the License at
 [http://www.apache.org/licenses/LICENSE-2.0]
 
 Unless required by applicable law or agreed to in writing, software
@@ -8,7 +8,7 @@ CPAN::Reporter::PrereqCheck - Modulino for prerequisite tests
 
 =head1 VERSION
 
-This documentation describes version 1.1708.
+This documentation describes version 1.1711.
 
 =head1 SYNOPSIS
 
@@ -28,16 +28,16 @@ It reads a module name and prerequisite string pair from each line of input
 and prints out the module name, 0 or 1 depending on whether the prerequisite
 is satisifed, and the installed module version.  If the module is not
 available, it will print "nE<sol>a" for the version.  If the module is available
-but can't be loaded, it will print "broken" for the version.  Modules 
+but can't be loaded, it will print "broken" for the version.  Modules
 without a version will be treated as being of version "0".
 
-No user serviceable parts are inside.  This modulino is packaged for 
+No user serviceable parts are inside.  This modulino is packaged for
 internal use by CPAN::Reporter.
 
 =head1 BUGS
 
-Please report any bugs or feature using the CPAN Request Tracker.  
-Bugs can be submitted through the web interface at 
+Please report any bugs or feature using the CPAN Request Tracker.
+Bugs can be submitted through the web interface at
 L<http://rt.cpan.org/Dist/Display.html?Queue=CPAN-Reporter>
 
 When submitting a bug or request, please include a test-file or a patch to an
@@ -63,7 +63,7 @@ Copyright (c) 2006, 2007 by David A. Golden
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
-You may obtain a copy of the License at 
+You may obtain a copy of the License at
 L<http://www.apache.org/licenses/LICENSE-2.0>
 
 Unless required by applicable law or agreed to in writing, software
@@ -1,7 +1,7 @@
 package CPAN::Reporter;
 use strict;
 use vars qw/$VERSION/;
-$VERSION = '1.1708'; 
+$VERSION = '1.1711';
 $VERSION = eval $VERSION; ## no critic
 
 use Config;
@@ -31,12 +31,12 @@ use constant MAX_OUTPUT_LENGTH => 50_000;
 
 require Devel::Autoflush;
 # directory fixture
-my $Autoflush_Lib = tempdir( 
-  "CPAN-Reporter-lib-XXXX", TMPDIR => 1, CLEANUP => 1 
+my $Autoflush_Lib = tempdir(
+  "CPAN-Reporter-lib-XXXX", TMPDIR => 1, CLEANUP => 1
 );
 # copy Devel::Autoflush to directory or clear autoflush_lib variable
-_file_copy_quiet( 
-  $INC{'Devel/Autoflush.pm'}, 
+_file_copy_quiet(
+  $INC{'Devel/Autoflush.pm'},
   File::Spec->catfile( $Autoflush_Lib, qw/Devel Autoflush.pm/ )
 ) or undef $Autoflush_Lib;
 
@@ -45,20 +45,20 @@ _file_copy_quiet(
 #--------------------------------------------------------------------------#
 
 sub configure {
-    goto &CPAN::Reporter::Config::_configure; 
+    goto &CPAN::Reporter::Config::_configure;
 }
 
-sub grade_make { 
+sub grade_make {
     my @args = @_;
-    my $result = _init_result( 'make', @args ) or return; 
+    my $result = _init_result( 'make', @args ) or return;
     _compute_make_grade($result);
     if ( $result->{grade} eq 'discard' ) {
-        $CPAN::Frontend->myprint( 
+        $CPAN::Frontend->myprint(
             "\nCPAN::Reporter: test results were not valid, $result->{grade_msg}.\n\n",
             $result->{prereq_pm}, "\n",
             "Test report will not be sent"
         );
-        CPAN::Reporter::History::_record_history( $result ) 
+        CPAN::Reporter::History::_record_history( $result )
             if not CPAN::Reporter::History::_is_duplicate( $result );
     }
     else {
@@ -70,15 +70,15 @@ sub grade_make {
 
 sub grade_PL {
     my @args = @_;
-    my $result = _init_result( 'PL', @args ) or return; 
+    my $result = _init_result( 'PL', @args ) or return;
     _compute_PL_grade($result);
     if ( $result->{grade} eq 'discard' ) {
-        $CPAN::Frontend->myprint( 
+        $CPAN::Frontend->myprint(
             "\nCPAN::Reporter: test results were not valid, $result->{grade_msg}.\n\n",
             $result->{prereq_pm}, "\n",
             "Test report will not be sent"
         );
-        CPAN::Reporter::History::_record_history( $result ) 
+        CPAN::Reporter::History::_record_history( $result )
             if not CPAN::Reporter::History::_is_duplicate( $result );
     }
     else {
@@ -90,15 +90,15 @@ sub grade_PL {
 
 sub grade_test {
     my @args = @_;
-    my $result = _init_result( 'test', @args ) or return; 
+    my $result = _init_result( 'test', @args ) or return;
     _compute_test_grade($result);
     if ( $result->{grade} eq 'discard' ) {
-        $CPAN::Frontend->myprint( 
+        $CPAN::Frontend->myprint(
             "\nCPAN::Reporter: test results were not valid, $result->{grade_msg}.\n\n",
             $result->{prereq_pm}, "\n",
             "Test report will not be sent"
         );
-        CPAN::Reporter::History::_record_history( $result ) 
+        CPAN::Reporter::History::_record_history( $result )
             if not CPAN::Reporter::History::_is_duplicate( $result );
     }
     else {
@@ -111,12 +111,12 @@ sub grade_test {
 sub record_command {
     my ($command, $timeout) = @_;
 
-    # XXX refactor this! 
+    # XXX refactor this!
     # Get configuration options
     if ( -r CPAN::Reporter::Config::_get_config_file() ) {
         my $config_obj = CPAN::Reporter::Config::_open_config_file();
         my $config;
-        $config = CPAN::Reporter::Config::_get_config_options( $config_obj ) 
+        $config = CPAN::Reporter::Config::_get_config_options( $config_obj )
             if $config_obj;
 
         $timeout ||= $config->{command_timeout}; # might still be undef
@@ -126,7 +126,7 @@ sub record_command {
 
     my $temp_out = _temp_filename( 'CPAN-Reporter-TO-' );
 
-    # Teeing a command loses its exit value so we must wrap the command 
+    # Teeing a command loses its exit value so we must wrap the command
     # and print the exit code so we can read it off of output
     my $wrap_code;
     if ( $timeout ) {
@@ -151,7 +151,7 @@ HERE
 
     $wrapper_fh->print( $wrap_code );
     $wrapper_fh->close;
-    
+
     # tee the command wrapper
     my $tee_input = Probe::Perl->find_perl_interpreter() .  " $wrapper_name";
     $tee_input .= " $redirect" if defined $redirect;
@@ -164,8 +164,8 @@ HERE
     # read back the output
     my $output_fh = IO::File->new($temp_out, "r");
     if ( !$output_fh ) {
-        $CPAN::Frontend->mywarn( 
-            "CPAN::Reporter: couldn't read command results for '$cmd'\n" 
+        $CPAN::Frontend->mywarn(
+            "CPAN::Reporter: couldn't read command results for '$cmd'\n"
         );
         return;
     }
@@ -176,7 +176,7 @@ HERE
     unlink $wrapper_name, $temp_out;
 
     if ( ! @cmd_output ) {
-        $CPAN::Frontend->mywarn( 
+        $CPAN::Frontend->mywarn(
             "CPAN::Reporter: didn't capture command results for '$cmd'\n"
         );
         return;
@@ -188,16 +188,16 @@ HERE
         ($exit_value) = $cmd_output[-1] =~ m{exited with ([-0-9]+)};
         pop @cmd_output;
     }
-    
+
     # bail out on some errors
     if ( ! defined $exit_value ) {
-        $CPAN::Frontend->mywarn( 
+        $CPAN::Frontend->mywarn(
             "CPAN::Reporter: couldn't determine exit value for '$cmd'\n"
         );
         return;
     }
     elsif ( $exit_value == -1 ) {
-        $CPAN::Frontend->mywarn( 
+        $CPAN::Frontend->mywarn(
             "CPAN::Reporter: couldn't execute '$cmd'\n"
         );
         return;
@@ -233,7 +233,7 @@ sub _compute_make_grade {
     }
 
     _downgrade_known_causes( $result );
-    
+
     $result->{success} =  $result->{grade} eq 'pass';
     return;
 }
@@ -255,7 +255,7 @@ sub _compute_PL_grade {
     }
 
     _downgrade_known_causes( $result );
-    
+
     $result->{success} =  $result->{grade} eq 'pass';
     return;
 }
@@ -265,18 +265,18 @@ sub _compute_PL_grade {
 #
 # Don't shortcut to unknown unless _has_tests because a custom
 # Makefile.PL or Build.PL might define tests in a non-standard way
-# 
+#
 # With test.pl and 'make test', any t/*.t might pass Test::Harness, but
 # test.pl might still fail, or there might only be test.pl,
 # so use exit code directly
 #
 # Likewise, if we have recursive Makefile.PL, then we don't trust the
-# reverse-order parsing and should just take the exit code directly 
+# reverse-order parsing and should just take the exit code directly
 #
 # Otherwise, parse in reverse order for Test::Harness output or a couple
-# other significant strings and stop after the first match.  Going in 
-# reverse and stopping is done to (hopefully) avoid picking up spurious 
-# results from any test output.  But then we have to check for 
+# other significant strings and stop after the first match.  Going in
+# reverse and stopping is done to (hopefully) avoid picking up spurious
+# results from any test output.  But then we have to check for
 # unsupported OS strings in case those were printed but were not fatal.
 #--------------------------------------------------------------------------#
 
@@ -285,7 +285,7 @@ sub _compute_test_grade {
     my ($grade,$msg);
     my $output = $result->{output};
 
-    # In some cases, get a result straight from the exit code 
+    # In some cases, get a result straight from the exit code
     if ( $result->{is_make} && ( -f "test.pl" || _has_recursive_make() ) ) {
         if ( $result->{exit_value} ) {
             $grade = "fail";
@@ -299,7 +299,7 @@ sub _compute_test_grade {
     # Otherwise, get a result from Test::Harness output
     else {
         # figure out the right harness parser
-        _expand_result( $result ); 
+        _expand_result( $result );
         my $harness_version = $result->{toolchain}{'Test::Harness'}{have};
         my $harness_parser = CPAN::Version->vgt($harness_version, '2.99_01')
                     ? \&_parse_tap_harness
@@ -354,33 +354,33 @@ sub _dispatch_report {
     # Get configuration options
     my $config_obj = CPAN::Reporter::Config::_open_config_file();
     my $config;
-    $config = CPAN::Reporter::Config::_get_config_options( $config_obj ) 
+    $config = CPAN::Reporter::Config::_get_config_options( $config_obj )
         if $config_obj;
     if ( ! $config->{email_from} ) {
         $CPAN::Frontend->mywarn( << "EMAIL_REQUIRED");
-        
+
 CPAN::Reporter: required 'email_from' option missing an email address, so
 test report will not be sent. See documentation for configuration details.
 
 EMAIL_REQUIRED
         return;
     }
-        
+
     # Need to know if this is a duplicate
     my $is_duplicate = CPAN::Reporter::History::_is_duplicate( $result );
 
-    # Abort if the distribution name is not formatted according to 
+    # Abort if the distribution name is not formatted according to
     # CPAN Testers requirements: Dist-Name-version.suffix
     # Regex from CPAN-Testers should extract name, separator, version
     # and extension
-    my @format_checks = $result->{dist_basename} =~ 
+    my @format_checks = $result->{dist_basename} =~
         m{(.+)([\-\_])(v?\d.*)(\.(?:tar\.(?:gz|bz2)|tgz|zip))$}i;
     ;
     if ( ! grep { length } @format_checks ) {
         $CPAN::Frontend->mywarn( << "END_BAD_DISTNAME");
-        
-CPAN::Reporter: the distribution name '$result->{dist_basename}' does not 
-appear to be packaged according to CPAN tester guidelines. Perhaps it is 
+
+CPAN::Reporter: the distribution name '$result->{dist_basename}' does not
+appear to be packaged according to CPAN tester guidelines. Perhaps it is
 not a normal CPAN distribution.
 
 Test report will not be sent.
@@ -389,7 +389,7 @@ END_BAD_DISTNAME
 
         # record this as a discard, instead
         $result->{grade} = 'discard';
-        CPAN::Reporter::History::_record_history( $result ) 
+        CPAN::Reporter::History::_record_history( $result )
             if not $is_duplicate;
         return;
     }
@@ -409,7 +409,7 @@ END_BAD_DISTNAME
             next if $dist_id !~ /$pattern/i;
             # if it matches, warn and return
             $CPAN::Frontend->myprint( << "END_SKIP_DIST" );
-CPAN::Reporter: '$dist_id' matched against the send_skipfile.  
+CPAN::Reporter: '$dist_id' matched against the send_skipfile.
 
 Test report will not be sent.
 
@@ -423,8 +423,10 @@ END_SKIP_DIST
     my $tr = Test::Reporter->new;
     $tr->grade( $result->{grade} );
     $tr->distribution( $result->{dist_name}  );
-    # older T::R might not handle the distfile() method
-    $tr->distfile( $result->{dist}->pretty_id ) if $tr->can('distfile');
+    # Older Test::Reporter doesn't support distfile, but we need it for
+    # Metabase transport
+    $tr->distfile( $result->{dist}->pretty_id )
+      if $Test::Reporter::VERSION >= 1.54;
 
     # Skip if duplicate and not sending duplicates
     if ( $is_duplicate ) {
@@ -437,7 +439,7 @@ CPAN::Reporter: this appears to be a duplicate report for the $phase phase:
 Test report will not be sent.
 
 DUPLICATE_REPORT
-            
+
             return;
         }
     }
@@ -463,7 +465,7 @@ DUPLICATE_REPORT
         my @mx = split " ", $config->{smtp_server};
         $tr->mx( \@mx );
     }
-    
+
     # Populate the test report
     $tr->comments( _report_text( $result ) );
     $tr->via( 'CPAN::Reporter ' . $CPAN::Reporter::VERSION );
@@ -474,16 +476,16 @@ DUPLICATE_REPORT
         local $ENV{VISUAL} = $editor if $editor; ## no critic
         $tr->edit_comments;
     }
-    
+
     # send_*_report can override send_report
     my $send_config = defined $config->{"send_$phase\_report"}
                     ? "send_$phase\_report"
                     : "send_report" ;
     if ( _prompt( $config, $send_config, $tr->grade ) =~ /^y/ ) {
-        $CPAN::Frontend->myprint( "CPAN::Reporter: sending test report with '" . $tr->grade . 
+        $CPAN::Frontend->myprint( "CPAN::Reporter: sending test report with '" . $tr->grade .
               "' to " . $tr->address . "\n");
         if ( $tr->send() ) {
-            CPAN::Reporter::History::_record_history( $result ) 
+            CPAN::Reporter::History::_record_history( $result )
                 if not $is_duplicate;
         }
         else {
@@ -517,7 +519,7 @@ sub _downgrade_known_causes {
     return if $grade eq 'pass' && $result->{phase} ne 'PL';
 
     # get prereqs
-    _expand_result( $result ); 
+    _expand_result( $result );
 
     # if process was halted with a signal, just set for discard and return
     if ( $result->{exit_value} & 127 ) {
@@ -552,19 +554,28 @@ sub _downgrade_known_causes {
         $grade = 'na';
         $msg = 'This platform is not supported';
     }
+    # check for Makefile without 'test' target; there are lots
+    # of variations on the error message, e.g. "target test", "target 'test'",
+    # "'test'", "`test'" and so on.
+    elsif (
+      $result->{is_make} && $result->{phase} eq 'test' && ! _has_test_target()
+    ) {
+        $grade = 'unknown';
+        $msg = 'No make test target';
+    }
     # check the prereq report for missing or failure flag '!'
     elsif ( $grade ne 'pass' && $result->{prereq_pm} =~ m{n/a}ims ) {
         $grade = 'discard';
-        $msg = 'Prerequisite missing';
+        $msg = "Prerequisite missing:\n$result->{prereq_pm}";
     }
     elsif ( $grade ne 'pass' && $result->{prereq_pm} =~ m{^\s+!}ims ) {
         $grade = 'discard';
-        $msg = 'Prerequisite version too low';
+        $msg = "Prerequisite version too low:\n$result->{prereq_pm}";
     }
-    # in PL stage -- if pass but no Makefile or Build, then this should 
+    # in PL stage -- if pass but no Makefile or Build, then this should
     # be recorded as a discard
-    elsif ( $result->{phase} eq 'PL' && $grade eq 'pass' 
-         && ! -f 'Makefile' && ! -f 'Build' 
+    elsif ( $result->{phase} eq 'PL' && $grade eq 'pass'
+         && ! -f 'Makefile' && ! -f 'Build'
     ) {
         $grade = 'discard';
         $msg = 'No Makefile or Build file found';
@@ -573,14 +584,14 @@ sub _downgrade_known_causes {
         $grade = 'discard';
         $msg = '-j is not a valid option for Module::Build (upgrade your CPAN.pm)';
     }
-    elsif ( 
-      $result->{is_make} && $result->{phase} eq 'make' && 
-      grep { /Makefile out-of-date with respect to Makefile.PL/ } @$output 
+    elsif (
+      $result->{is_make} && $result->{phase} eq 'make' &&
+      grep { /Makefile out-of-date with respect to Makefile.PL/ } @$output
     ) {
         $grade = 'discard';
         $msg = 'Makefile out-of-date';
     }
-    
+
     # store results
     $result->{grade} = $grade;
     $result->{grade_msg} = $msg;
@@ -693,7 +704,7 @@ sub _get_perl5opt {
 #--------------------------------------------------------------------------#
 # _has_recursive_make
 #
-# Ignore Makefile.PL in t directories 
+# Ignore Makefile.PL in t directories
 #--------------------------------------------------------------------------#
 
 sub _has_recursive_make {
@@ -713,7 +724,16 @@ sub _has_recursive_make {
 }
 
 #--------------------------------------------------------------------------#
-# _init_result -- create and return a hash of values for use in 
+# _has_test_target
+#--------------------------------------------------------------------------#
+
+sub _has_test_target {
+  my $fh = IO::File->new("Makefile") or return;
+  return scalar grep { /^test[ ]*:/ } <$fh>;
+}
+
+#--------------------------------------------------------------------------#
+# _init_result -- create and return a hash of values for use in
 # report evaluation and dispatch
 #
 # takes same argument format as grade_*()
@@ -721,7 +741,7 @@ sub _has_recursive_make {
 
 sub _init_result {
     my ($phase, $dist, $system_command, $output, $exit_value) = @_;
-    
+
     unless ( defined $output && defined $exit_value ) {
         my $missing;
         if ( ! defined $output && ! defined $exit_value ) {
@@ -794,10 +814,10 @@ sub _max_length {
     return $max;
 }
 
-    
+
 #--------------------------------------------------------------------------#
 # _parse_tap_harness
-# 
+#
 # As of Test::Harness 2.99_02, the final line is provided by TAP::Harness
 # as "Result: STATUS" where STATUS is "PASS", "FAIL" or "NOTESTS"
 #--------------------------------------------------------------------------#
@@ -826,7 +846,7 @@ sub _parse_tap_harness {
 # _parse_test_harness
 #
 # Output strings taken from Test::Harness::
-# _show_results()  -- for versions < 2.57_03 
+# _show_results()  -- for versions < 2.57_03
 # get_results()    -- for versions >= 2.57_03
 #--------------------------------------------------------------------------#
 
@@ -861,15 +881,15 @@ my @prereq_sections = qw/requires build_requires configure_requires/;
 sub _prereq_report {
     my $dist = shift;
     my (%need, %have, %prereq_met, $report);
-    
+
     # Extract requires/build_requires from CPAN dist
     my $prereq_pm = $dist->prereq_pm;
     if ( ref $prereq_pm eq 'HASH' ) {
         # is it the new CPAN style with requires/build_requires?
         if (join(q{ }, sort keys %$prereq_pm) eq "build_requires requires") {
-            $need{requires} = $prereq_pm->{requires} 
+            $need{requires} = $prereq_pm->{requires}
                 if  ref $prereq_pm->{requires} eq 'HASH';
-            $need{build_requires} = $prereq_pm->{build_requires} 
+            $need{build_requires} = $prereq_pm->{build_requires}
                 if ref $prereq_pm->{build_requires} eq 'HASH';
         }
         else {
@@ -883,12 +903,12 @@ sub _prereq_report {
       if ( -f $meta_yml ) {
         my @yaml = eval { Parse::CPAN::Meta::LoadFile($meta_yml) };
         if ( $@ ) {
-          $CPAN::Frontend->mywarn( 
+          $CPAN::Frontend->mywarn(
             "CPAN::Reporter: error parsing META.yml\n"
           );
         }
-        if (  ref $yaml[0] eq 'HASH' && 
-              ref $yaml[0]{configure_requires} eq 'HASH' 
+        if (  ref $yaml[0] eq 'HASH' &&
+              ref $yaml[0]{configure_requires} eq 'HASH'
         ) {
           $need{configure_requires} = $yaml[0]{configure_requires};
         }
@@ -906,8 +926,8 @@ sub _prereq_report {
             $prereq_met{$section}{$mod} = $prereq_results->{$mod}{met};
         }
     }
-    
-    # find formatting widths 
+
+    # find formatting widths
     my ($name_width, $need_width, $have_width) = (6, 4, 4);
     for my $section ( @prereq_sections ) {
         for my $module ( keys %{ $need{$section} } ) {
@@ -920,7 +940,7 @@ sub _prereq_report {
         }
     }
 
-    my $format_str = 
+    my $format_str =
         "  \%1s \%-${name_width}s \%-${need_width}s \%-${have_width}s\n";
 
     # generate the report
@@ -928,21 +948,21 @@ sub _prereq_report {
       if ( keys %{ $need{$section} } ) {
         $report .= "$section:\n\n";
         $report .= sprintf( $format_str, " ", qw/Module Need Have/ );
-        $report .= sprintf( $format_str, " ", 
-          "-" x $name_width, 
+        $report .= sprintf( $format_str, " ",
+          "-" x $name_width,
           "-" x $need_width,
           "-" x $have_width );
         for my $module (sort {lc $a cmp lc $b} keys %{ $need{$section} } ) {
           my $need = $need{$section}{$module};
           my $have = $have{$section}{$module};
           my $bad = $prereq_met{$section}{$module} ? " " : "!";
-          $report .= 
+          $report .=
           sprintf( $format_str, $bad, $module, $need, $have);
         }
-        $report .= "\n"; 
+        $report .= "\n";
       }
     }
-    
+
     return $report || "    No requirements found\n";
 }
 
@@ -977,13 +997,13 @@ sub _prompt {
     my $action = $dispatch->{$grade} || $dispatch->{default};
     my $intro = $spec{$option}{prompt} . $extra . " (yes/no)";
     my $prompt;
-    if     ( $action =~ m{^ask/yes}i ) { 
+    if     ( $action =~ m{^ask/yes}i ) {
         $prompt = CPAN::Shell::colorable_makemaker_prompt( $intro, "yes" );
     }
     elsif  ( $action =~ m{^ask(/no)?}i ) {
         $prompt = CPAN::Shell::colorable_makemaker_prompt( $intro, "no" );
     }
-    else { 
+    else {
         $prompt = $action;
     }
     return lc $prompt;
@@ -1012,7 +1032,7 @@ HERE
 
     'unknown' => <<'HERE',
 Thank you for uploading your work to CPAN.  However, attempting to
-test your distribution gave an inconclusive result.  
+test your distribution gave an inconclusive result.
 
 This could be because your distribution had an error during the make/build
 stage, did not define tests, tests could not be found, because your tests were
@@ -1023,15 +1043,15 @@ http://wiki.cpantesters.org/wiki/CPANAuthorNotes
 HERE
 
     'na' => <<'HERE',
-Thank you for uploading your work to CPAN.  While attempting to build or test 
-this distribution, the distribution signaled that support is not available 
-either for this operating system or this version of Perl.  Nevertheless, any 
-diagnostic output produced is provided below for reference.  If this is not 
+Thank you for uploading your work to CPAN.  While attempting to build or test
+this distribution, the distribution signaled that support is not available
+either for this operating system or this version of Perl.  Nevertheless, any
+diagnostic output produced is provided below for reference.  If this is not
 what you expect, you may wish to consult the CPAN Testers Wiki:
 
 http://wiki.cpantesters.org/wiki/CPANAuthorNotes
 HERE
-    
+
 );
 
 sub _report_text {
@@ -1043,16 +1063,16 @@ sub _report_text {
         $test_log .= "\n[Output truncated after $max_k]\n\n";
     }
     # Flag automated report
-    my $default_comment = $ENV{AUTOMATED_TESTING} 
-        ? "this report is from an automated smoke testing program\nand was not reviewed by a human for accuracy" 
+    my $default_comment = $ENV{AUTOMATED_TESTING}
+        ? "this report is from an automated smoke testing program\nand was not reviewed by a human for accuracy"
         : "none provided" ;
-        
+
     # generate report
     my $output = << "ENDREPORT";
 Dear $data->{author},
-    
+
 This is a computer-generated report for $data->{dist_name}
-on perl $data->{perl_version}, created by CPAN-Reporter-$CPAN::Reporter::VERSION\. 
+on perl $data->{perl_version}, created by CPAN-Reporter-$CPAN::Reporter::VERSION\.
 
 $intro_para{ $data->{grade} }
 Sections of this report:
@@ -1066,7 +1086,7 @@ Sections of this report:
 TESTER COMMENTS
 ------------------------------
 
-Additional comments from tester: 
+Additional comments from tester:
 
 $default_comment
 
@@ -1142,7 +1162,7 @@ sub _split_redirect {
 #--------------------------------------------------------------------------#
 # _temp_filename -- stand-in for File::Temp for backwards compatibility
 #
-# takes an optional prefix, adds 8 random chars and returns 
+# takes an optional prefix, adds 8 random chars and returns
 # an absolute pathname
 #
 # NOTE -- manual unlink required
@@ -1167,7 +1187,7 @@ sub _temp_filename {
 
 sub _timeout_wrapper {
     my ($cmd, $timeout) = @_;
-    
+
     # Check Proc::ProcessTable also in case an unauthorized Proc::Killfam is
     # present, as from Tk-ExecuteCommand
     {
@@ -1176,7 +1196,7 @@ sub _timeout_wrapper {
     }
     if ($@) {
         $CPAN::Frontend->mywarn( << 'HERE' );
-CPAN::Reporter: you need Proc::ProcessTable and Proc::Killfam for 
+CPAN::Reporter: you need Proc::ProcessTable and Proc::Killfam for
 inactivity_timeout support.  Continuing without timeout...
 HERE
         return;
@@ -1241,7 +1261,7 @@ HERE
                      split /$Config{path_sep}/, $ENV{PATH};
         if (! $path) {
             $CPAN::Frontend->mywarn( << "HERE" );
-CPAN::Reporter: can't locate $exe in the PATH. 
+CPAN::Reporter: can't locate $exe in the PATH.
 Continuing without timeout...
 HERE
             return;
@@ -1305,8 +1325,8 @@ sub _toolchain_report {
     $result->{toolchain} = $installed;
 
     my $mod_width = _max_length( keys %$installed );
-    my $ver_width = _max_length( 
-        map { $installed->{$_}{have} } keys %$installed  
+    my $ver_width = _max_length(
+        map { $installed->{$_}{have} } keys %$installed
     );
 
     my $format = "    \%-${mod_width}s \%-${ver_width}s\n";
@@ -1334,7 +1354,7 @@ sub _toolchain_report {
 # the way they would be found when test programs are run.  This means that
 # any updates to PERL5LIB will be reflected in the results.
 #
-# File-finding logic taken from CPAN::Module::inst_file().  Logic to 
+# File-finding logic taken from CPAN::Module::inst_file().  Logic to
 # handle newer Module::Build prereq syntax is taken from
 # CPAN::Distribution::unsat_prereq()
 #
@@ -1347,7 +1367,7 @@ sub _version_finder {
 
     my $perl = Probe::Perl->find_perl_interpreter();
     my @prereq_results;
-    
+
     my $prereq_input = _temp_filename( 'CPAN-Reporter-PI-' );
     my $fh = IO::File->new( $prereq_input, "w" )
         or die "Could not create temporary '$prereq_input' for prereq analysis: $!";
@@ -1380,7 +1400,7 @@ sub _version_finder {
 __END__
 
 #--------------------------------------------------------------------------#
-# pod documentation 
+# pod documentation
 #--------------------------------------------------------------------------#
 
 =begin wikidoc
@@ -1432,7 +1452,7 @@ If CPAN.pm was upgraded, it needs to be reloaded.
 
 If upgrading from a very old version of CPAN.pm, users may be prompted to renew
 their configuration settings, including the 'test_report' option to enable
-CPAN::Reporter.  
+CPAN::Reporter.
 
 If not prompted automatically, users should manually initialize CPAN::Reporter
 support.  After enabling CPAN::Reporter, CPAN.pm will automatically continue
@@ -1463,7 +1483,7 @@ See [CPAN::Reporter::Config] for advanced configuration settings.
 == Using CPAN::Reporter
 
 Once CPAN::Reporter is enabled and configured, test or install modules with
-CPAN.pm as usual.  
+CPAN.pm as usual.
 
 For example, to force CPAN to repeat tests for CPAN::Reporter to see how it
 works:
@@ -1479,9 +1499,9 @@ CPAN::Reporter will assign one of the following grades to the report:
 
 * {pass} -- distribution built and tested correctly
 * {fail} --  distribution failed to test correctly
-* {unknown} -- distribution failed to build, had no test suite or outcome was 
+* {unknown} -- distribution failed to build, had no test suite or outcome was
 inconclusive
-* {na} --- distribution is not applicable to this platform and/or 
+* {na} --- distribution is not applicable to this platform and/or
 version of Perl
 
 In returning results of the test suite to CPAN.pm, "pass" and "unknown" are
@@ -1489,7 +1509,7 @@ considered successful attempts to "make test" or "Build test" and will not
 prevent installation.  "fail" and "na" are considered to be failures and
 CPAN.pm will not install unless forced.
 
-An error from Makefile.PL/Build.PL or make/Build will also be graded as 
+An error from Makefile.PL/Build.PL or make/Build will also be graded as
 "unknown" and a failure will be signaled to CPAN.pm.
 
 If prerequisites specified in {Makefile.PL} or {Build.PL} are not available,
@@ -1501,20 +1521,20 @@ CPAN::Reporter includes information in the test report about environment
 variables and special Perl variables that could be affecting test results in
 order to help module authors interpret the results of the tests.  This includes
 information about paths, terminal, locale, user/group ID, installed toolchain
-modules (e.g. ExtUtils::MakeMaker) and so on.  
+modules (e.g. ExtUtils::MakeMaker) and so on.
 
 These have been intentionally limited to items that should not cause harmful
 personal information to be revealed -- it does ~not~ include your entire
 environment.  Nevertheless, please do not use CPAN::Reporter if you are
-concerned about the disclosure of this information as part of your test report.  
+concerned about the disclosure of this information as part of your test report.
 
-Users wishing to review this information may choose to edit the report 
+Users wishing to review this information may choose to edit the report
 prior to sending it.
 
 = BUGS
 
-Please report any bugs or feature using the CPAN Request Tracker.  
-Bugs can be submitted through the web interface at 
+Please report any bugs or feature using the CPAN Request Tracker.
+Bugs can be submitted through the web interface at
 [http://rt.cpan.org/Dist/Display.html?Queue=CPAN-Reporter]
 
 When submitting a bug or request, please include a test-file or a patch to an
@@ -1528,7 +1548,7 @@ Information about CPAN::Testers:
 * [http://www.cpantesters.org] -- project home with all reports
 * [http://wiki.cpantesters.org] -- documentation and wiki
 
-Additional Documentation: 
+Additional Documentation:
 
 * [CPAN::Reporter::Config] -- advanced configuration settings
 * [CPAN::Reporter::FAQ] -- hints and tips
@@ -1543,7 +1563,7 @@ Copyright (c) 2006, 2007, 2008 by David A. Golden
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
-You may obtain a copy of the License at 
+You may obtain a copy of the License at
 [http://www.apache.org/licenses/LICENSE-2.0]
 
 Unless required by applicable law or agreed to in writing, software
@@ -8,7 +8,7 @@ CPAN::Reporter - Adds CPAN Testers reporting to CPAN.pm
 
 =head1 VERSION
 
-This documentation describes version 1.1708.
+This documentation describes version 1.1711.
 
 =head1 SYNOPSIS
 
@@ -49,7 +49,7 @@ If CPAN.pm was upgraded, it needs to be reloaded.
 
 If upgrading from a very old version of CPAN.pm, users may be prompted to renew
 their configuration settings, including the 'test_report' option to enable
-CPAN::Reporter.  
+CPAN::Reporter.
 
 If not prompted automatically, users should manually initialize CPAN::Reporter
 support.  After enabling CPAN::Reporter, CPAN.pm will automatically continue
@@ -80,7 +80,7 @@ See L<CPAN::Reporter::Config> for advanced configuration settings.
 =head2 Using CPAN::Reporter
 
 Once CPAN::Reporter is enabled and configured, test or install modules with
-CPAN.pm as usual.  
+CPAN.pm as usual.
 
 For example, to force CPAN to repeat tests for CPAN::Reporter to see how it
 works:
@@ -106,12 +106,12 @@ C<<< fail >>> --  distribution failed to test correctly
 
 =item *
 
-C<<< unknown >>> -- distribution failed to build, had no test suite or outcome was 
+C<<< unknown >>> -- distribution failed to build, had no test suite or outcome was
 inconclusive
 
 =item *
 
-C<<< na >>> --- distribution is not applicable to this platform andE<sol>or 
+C<<< na >>> --- distribution is not applicable to this platform andE<sol>or
 version of Perl
 
 =back
@@ -121,7 +121,7 @@ considered successful attempts to "make test" or "Build test" and will not
 prevent installation.  "fail" and "na" are considered to be failures and
 CPAN.pm will not install unless forced.
 
-An error from Makefile.PLE<sol>Build.PL or makeE<sol>Build will also be graded as 
+An error from Makefile.PLE<sol>Build.PL or makeE<sol>Build will also be graded as
 "unknown" and a failure will be signaled to CPAN.pm.
 
 If prerequisites specified in C<<< Makefile.PL >>> or C<<< Build.PL >>> are not available,
@@ -133,20 +133,20 @@ CPAN::Reporter includes information in the test report about environment
 variables and special Perl variables that could be affecting test results in
 order to help module authors interpret the results of the tests.  This includes
 information about paths, terminal, locale, userE<sol>group ID, installed toolchain
-modules (e.g. ExtUtils::MakeMaker) and so on.  
+modules (e.g. ExtUtils::MakeMaker) and so on.
 
 These have been intentionally limited to items that should not cause harmful
 personal information to be revealed -- it does I<not> include your entire
 environment.  Nevertheless, please do not use CPAN::Reporter if you are
-concerned about the disclosure of this information as part of your test report.  
+concerned about the disclosure of this information as part of your test report.
 
-Users wishing to review this information may choose to edit the report 
+Users wishing to review this information may choose to edit the report
 prior to sending it.
 
 =head1 BUGS
 
-Please report any bugs or feature using the CPAN Request Tracker.  
-Bugs can be submitted through the web interface at 
+Please report any bugs or feature using the CPAN Request Tracker.
+Bugs can be submitted through the web interface at
 L<http://rt.cpan.org/Dist/Display.html?Queue=CPAN-Reporter>
 
 When submitting a bug or request, please include a test-file or a patch to an
@@ -172,7 +172,7 @@ L<http://wiki.cpantesters.org> -- documentation and wiki
 
 =back
 
-Additional Documentation: 
+Additional Documentation:
 
 =over
 
@@ -196,7 +196,7 @@ Copyright (c) 2006, 2007, 2008 by David A. Golden
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
-You may obtain a copy of the License at 
+You may obtain a copy of the License at
 L<http://www.apache.org/licenses/LICENSE-2.0>
 
 Unless required by applicable law or agreed to in writing, software
@@ -39,6 +39,15 @@ my @test_distros = (
         mb_grade => "unknown",
         mb_msg => "No tests provided",
     },
+    {
+        name => 'NoTestTarget',
+        eumm_success => 1,
+        eumm_grade => "unknown",
+        eumm_msg => "No make test target",
+        mb_success => 1,
+        mb_grade => "unknown",
+        mb_msg => "No tests provided",
+    },
 );
 
 plan tests => 1 + test_fake_config_plan() 
@@ -34,7 +34,7 @@ use t::MockHomeDir;
 my $perl = Probe::Perl->find_perl_interpreter();
 my $make = $Config{make};
 
-my $temp_stdout = File::Temp->new() 
+my $temp_stdout = File::Temp->new()
     or die "Couldn't make temporary file:$!\nIs your temp drive full?";
 
 my $home_dir = t::MockHomeDir::home_dir();
@@ -74,7 +74,7 @@ sub test_fake_config {
 
     is( File::HomeDir::my_documents(), t::MockHomeDir::home_dir(),
         "home directory mocked"
-    ); 
+    );
     mkpath $config_dir;
     ok( -d $config_dir,
         "config directory created"
@@ -99,7 +99,7 @@ sub test_fake_config {
 #--------------------------------------------------------------------------#
 
 sub test_grade_PL_iter_plan() { 5 }
-sub test_grade_PL_plan() { test_grade_PL_iter_plan() * 2 } 
+sub test_grade_PL_plan() { test_grade_PL_iter_plan() * 2 }
 sub test_grade_PL {
     my ($case, $dist) = @_;
     local $Test::Builder::Level = $Test::Builder::Level + 1;
@@ -108,27 +108,27 @@ sub test_grade_PL {
 
     for my $tool ( qw/eumm mb/ ) {
         SKIP: {
-            my ($have_tool,$tool_mod,$tool_PL) = 
+            my ($have_tool,$tool_mod,$tool_PL) =
                 @{$tool_constants{$tool}}{qw/have module PL/};
-            my $tool_label = $tool eq 'eumm'  ? "Makefile.PL" 
+            my $tool_label = $tool eq 'eumm'  ? "Makefile.PL"
                                             : "Build.PL";
-            my $tool_cmd = "$perl $tool_label"; 
+            my $tool_cmd = "$perl $tool_label";
 
             skip "$tool_mod not installed or working", test_grade_PL_iter_plan()
                 if ! $have_tool;
-            
+
             my $tempd = _ok_clone_dist_dir( $case->{name} );
             local $dist->{build_dir} = "$tempd";
-            
+
             $t::Helper::sent_report = undef;
             $t::Helper::comments = undef;
 
-            my ($stdout, $stderr, $build_rc, $test_build_rc, 
+            my ($stdout, $stderr, $build_rc, $test_build_rc,
                 $output, $exit_value, $rc);
 
             eval {
                 capture sub {
-                    ($output, $exit_value) = 
+                    ($output, $exit_value) =
                         CPAN::Reporter::record_command($tool_cmd);
                     $rc = CPAN::Reporter::grade_PL(
                         $dist, $tool_cmd, $output, $exit_value
@@ -140,27 +140,27 @@ sub test_grade_PL {
                 _diag_output( $stdout, $stderr );
                 skip "died grading PL", test_grade_PL_iter_plan() - 1;
             }
-            
-            my $is_rc_correct = $case->{"$tool\_success"} 
+
+            my $is_rc_correct = $case->{"$tool\_success"}
                               ? $rc : ! $rc;
 
-            ok( $is_rc_correct, 
-                "$case->{name}: grade_PL() for $tool_PL returned " . 
+            ok( $is_rc_correct,
+                "$case->{name}: grade_PL() for $tool_PL returned " .
                 $case->{"$tool\_success"}
             );
-            
+
             my $case_grade = $case->{"$tool\_grade"};
             my $is_grade_correct;
 
             # Grade evaluation with special case if discarding
-            my ($found_grade_result, $found_msg) = 
+            my ($found_grade_result, $found_msg) =
                 ( $stdout =~ /^CPAN::Reporter: ([^,]+), ([^\n]+)/ms );
             if ( $case_grade eq 'discard' ) {
                 is ($found_grade_result, "test results were not valid",
                     "$case->{name}: '$tool_label' saw test results not valid message"
                 );
-                    
-                like( $stdout, 
+
+                like( $stdout,
                     "/Test report will not be sent/",
                     "$case->{name}: discard message correct"
                 ) and $is_grade_correct++;
@@ -171,12 +171,12 @@ sub test_grade_PL {
             }
             else {
                 my ($found_grade) = ( $found_grade_result =~ /$tool_label result is '([^']+)'/ );
-                is( $found_grade, $case_grade, 
+                is( $found_grade, $case_grade,
                     "$case->{name}: '$tool_label' grade reported as '$case_grade'"
                 ) or _diag_output( $stdout, $stderr );
-                
+
                 my $ctr_regex = "/preparing a CPAN Testers report for \Q$short_name\E/";
-                
+
                 if ( $case_grade eq 'pass' ) {
                     unlike( $stdout, $ctr_regex ,
                         "$case->{name}: report notification correct"
@@ -202,7 +202,7 @@ sub test_grade_PL {
                 }
             }
 
-            _diag_output( $stdout, $stderr ) 
+            _diag_output( $stdout, $stderr )
                 unless ( $is_rc_correct && $is_grade_correct );
         } # SKIP
     } # for
@@ -213,7 +213,7 @@ sub test_grade_PL {
 #--------------------------------------------------------------------------#
 
 sub test_grade_make_iter_plan() { 6 }
-sub test_grade_make_plan() { test_grade_make_iter_plan() * 2 } 
+sub test_grade_make_plan() { test_grade_make_iter_plan() * 2 }
 sub test_grade_make {
     my ($case, $dist) = @_;
     local $Test::Builder::Level = $Test::Builder::Level + 1;
@@ -222,21 +222,21 @@ sub test_grade_make {
 
     for my $tool ( qw/eumm mb/ ) {
         SKIP: {
-            my ($have_tool,$tool_mod,$tool_PL) = 
+            my ($have_tool,$tool_mod,$tool_PL) =
                 @{$tool_constants{$tool}}{qw/have module PL/};
             my $tool_cmd = $tool eq 'eumm' ? $Config{make} : "$perl Build";
             my $tool_label = $tool eq 'eumm' ? $Config{make} : "Build";
 
             skip "$tool_mod not installed or working", test_grade_make_iter_plan()
                 if ! $have_tool;
-            
+
             # Set up temporary directory for the case
             my $tempd = _ok_clone_dist_dir( $case->{name} );
 
             $t::Helper::sent_report = undef;
             $t::Helper::comments = undef;
 
-            my ($stdout, $stderr, $build_err, $test_build_rc, 
+            my ($stdout, $stderr, $build_err, $test_build_rc,
                 $output, $exit_value, $rc);
 
             capture sub {
@@ -250,7 +250,7 @@ sub test_grade_make {
                 };
             eval {
                 capture sub {
-                    ($output, $exit_value) = 
+                    ($output, $exit_value) =
                     CPAN::Reporter::record_command($tool_cmd);
                     $rc = CPAN::Reporter::grade_make(
                         $dist, $tool_cmd, $output, $exit_value
@@ -263,11 +263,11 @@ sub test_grade_make {
                 skip "died grading make", test_grade_make_iter_plan() - 1;
             }
 
-            my $is_rc_correct = $case->{"$tool\_success"} 
+            my $is_rc_correct = $case->{"$tool\_success"}
             ? $rc : ! $rc;
 
-            ok( $is_rc_correct, 
-                "$case->{name}: grade_make() for $tool_label returned " . 
+            ok( $is_rc_correct,
+                "$case->{name}: grade_make() for $tool_label returned " .
                 $case->{"$tool\_success"}
             );
 
@@ -275,14 +275,14 @@ sub test_grade_make {
             my $is_grade_correct;
 
             # Grade evaluation with special case if discarding
-            my ($found_grade_result, $found_msg) = 
+            my ($found_grade_result, $found_msg) =
                 ( $stdout =~ /^CPAN::Reporter: ([^,]+), ([^\n]+)/ms );
             if ( $case_grade eq 'discard' ) {
                 is ($found_grade_result, "test results were not valid",
                     "$case->{name}: '$tool_label' prerequisites not satisifed"
                 );
-                    
-                like( $stdout, 
+
+                like( $stdout,
                     "/Test report will not be sent/",
                     "$case->{name}: discard message correct"
                 ) and $is_grade_correct++;
@@ -293,12 +293,12 @@ sub test_grade_make {
             }
             else {
                 my ($found_grade) = ( $found_grade_result =~ /$tool_label result is '([^']+)'/ );
-                is( $found_grade, $case_grade, 
+                is( $found_grade, $case_grade,
                     "$case->{name}: '$tool_label' grade reported as '$case_grade'"
                 ) or _diag_output( $stdout, $stderr );
-                
+
                 my $ctr_regex = "/preparing a CPAN Testers report for \Q$short_name\E/";
-                
+
                 if ( $case_grade eq 'pass' ) {
                     unlike( $stdout, $ctr_regex ,
                         "$case->{name}: report notification correct"
@@ -328,7 +328,7 @@ sub test_grade_make {
                 unless ( $is_rc_correct && $is_grade_correct );
 
         } #SKIP
-    } #for   
+    } #for
 }
 
 #--------------------------------------------------------------------------#
@@ -345,7 +345,7 @@ sub test_grade_test {
 
     for my $tool ( qw/eumm mb/ ) {
         SKIP: {
-            my ($have_tool,$tool_mod,$tool_PL) = 
+            my ($have_tool,$tool_mod,$tool_PL) =
                 @{$tool_constants{$tool}}{qw/have module PL/};
             my $tool_cmd = $tool eq 'eumm'  ?  "$make test"
                                             :  "$perl Build test" ;
@@ -353,10 +353,10 @@ sub test_grade_test {
                                             :  "perl Build test" ;
 
             skip "$tool_mod not installed or working", test_grade_test_iter_plan()
-                if ! $have_tool; 
+                if ! $have_tool;
 
             my $tempd = _ok_clone_dist_dir( $case->{name} );
-                
+
             $t::Helper::sent_report = undef;
             $t::Helper::comments = undef;
 
@@ -383,22 +383,22 @@ sub test_grade_test {
                 skip "test() died", test_grade_test_iter_plan() - 1;
             }
 
-            my $is_rc_correct = $case->{"$tool\_success"} 
+            my $is_rc_correct = $case->{"$tool\_success"}
                               ? $test_build_rc : ! $test_build_rc;
-            ok( $is_rc_correct, 
-                "$case->{name}: '$tool_label' returned " . 
+            ok( $is_rc_correct,
+                "$case->{name}: '$tool_label' returned " .
                 $case->{"$tool\_success"}
             );
-            
+
             # Grade evaluation with special case if discarding
-            my ($found_grade_result, $found_msg) = 
-                ( $stdout =~ /^CPAN::Reporter: (Test result[^,]+), ([^\n]+)$/ims );
+            my ($found_grade_result, $found_msg) =
+                ( $stdout =~ /^CPAN::Reporter: (Test result[^,]+), ([^\n]+)[.:]$/ims );
             if ( $case->{"$tool\_grade"} eq 'discard' ) {
                 is ($found_grade_result, "test results were not valid",
                     "$case->{name}: '$tool_label' prerequisites not satisifed"
                 );
-                    
-                like( $stdout, 
+
+                like( $stdout,
                     "/Test report will not be sent/",
                     "$case->{name}: discard message correct"
                 );
@@ -410,10 +410,10 @@ sub test_grade_test {
             else {
                 my $case_grade = $case->{"$tool\_grade"};
                 my ($found_grade) = ( $found_grade_result =~ /Test result is '([^']+)'/ );
-                is( $found_grade, $case_grade, 
+                is( $found_grade, $case_grade,
                     "$case->{name}: '$tool_label' grade reported as '$case_grade'"
                 ) or _diag_output( $stdout, $stderr );
-                
+
                 like( $stdout, "/preparing a CPAN Testers report for \Q$short_name\E/",
                     "$case->{name}: report notification correct"
                 );
@@ -429,10 +429,10 @@ sub test_grade_test {
                     );
                 }
             }
-            
+
             # Grade explanation message
-            is( $found_msg, 
-                $case->{"$tool\_msg"} ? $case->{"$tool\_msg"} . q{.} : q{},
+            is( $found_msg,
+                $case->{"$tool\_msg"} ? $case->{"$tool\_msg"} : q{},
                 "$case->{name}: '$tool_label' grade explanation correct"
             );
 
@@ -463,7 +463,7 @@ HERE
 
     'unknown' => << 'HERE',
 Thank you for uploading your work to CPAN.  However, attempting to
-test your distribution gave an inconclusive result.  
+test your distribution gave an inconclusive result.
 
 This could be because your distribution had an error during the make/build
 stage, did not define tests, tests could not be found, because your tests were
@@ -474,15 +474,15 @@ http://wiki.cpantesters.org/wiki/CPANAuthorNotes
 HERE
 
     'na' => << 'HERE',
-Thank you for uploading your work to CPAN.  While attempting to build or test 
-this distribution, the distribution signaled that support is not available 
-either for this operating system or this version of Perl.  Nevertheless, any 
-diagnostic output produced is provided below for reference.  If this is not 
+Thank you for uploading your work to CPAN.  While attempting to build or test
+this distribution, the distribution signaled that support is not available
+either for this operating system or this version of Perl.  Nevertheless, any
+diagnostic output produced is provided below for reference.  If this is not
 what you expect, you may wish to consult the CPAN Testers Wiki:
 
 http://wiki.cpantesters.org/wiki/CPANAuthorNotes
 HERE
-    
+
 );
 
 sub test_report_plan() { 13 };
@@ -499,23 +499,23 @@ sub test_report {
         : "none provided" ;
 
     my $tempd = _ok_clone_dist_dir( $case->{name} );
-                
+
     my ($stdout, $stderr, $err, $test_output) = _run_report( $case );
-    
-    is( $err, q{}, 
-        "$label report ran without error" 
+
+    is( $err, q{},
+        "$label report ran without error"
     );
 
     ok( defined $msg_re && length $msg_re,
         "$label found '$expected_grade' grade paragraph"
     );
-    
+
     # set PERL_MM_USE_DEFAULT to mirror _run_report
     local $ENV{PERL_MM_USE_DEFAULT} = 1;
     my $env_vars = CPAN::Reporter::_env_report();
     my $special_vars = CPAN::Reporter::_special_vars_report();
     my $toolchain_versions = CPAN::Reporter::_toolchain_report();
-    
+
     like( $t::Helper::sent_report, '/' . quotemeta($msg_re) . '/ms',
         "$label correct intro paragraph"
     );
@@ -527,19 +527,19 @@ sub test_report {
     like( $t::Helper::sent_report, '/' . quotemeta($prereq) . '/ms',
         "$label found prereq report"
     );
-    
+
     like( $t::Helper::sent_report, '/' . quotemeta($env_vars) . '/ms',
         "$label found environment variables"
     );
-    
+
     like( $t::Helper::sent_report, '/' . quotemeta($special_vars) . '/ms',
         "$label found special variables"
     );
-    
+
     like( $t::Helper::sent_report, '/' . quotemeta($toolchain_versions) . '/ms',
         "$label found toolchain versions found"
     );
-    
+
     my $joined_output = join("", @$test_output);
 
     # extract just the test output
@@ -550,14 +550,14 @@ sub test_report {
         ^(.+) \n                            # test output ending in newline
         ^------------------------------ \n  # separator
         ^PREREQUISITES \n                   # next section
-        /xms ) 
+        /xms )
     {
         $found_test_output = $1;
     }
-    
+
     my $orig_found_length = length $found_test_output;
     ok( $orig_found_length, "$label located test output in report" );
-    
+
     # if output appears longer than max, the excess should only be the
     # error message, so look for it, strip it and check it
     my $length_error = q{};
@@ -586,7 +586,7 @@ sub test_report {
     # after extracting error, if any, the output should now be
     # less than the max length
     my $found_length = length $found_test_output;
-    ok( $found_length <= $max_report_length, 
+    ok( $found_length <= $max_report_length,
         "$label test_output less than or equal to maximum length"
     ) or diag "length $found_length > $max_report_length";
 
@@ -622,11 +622,11 @@ sub test_dispatch {
 
     my $tempd = _ok_clone_dist_dir( $case->{name} );
     local $case->{dist}{build_dir} = "$tempd";
-                
+
     my ($stdout, $stderr, $err) = _run_report( $case );
 
-    is( $err, q{}, 
-            "generate report for $case->{label}" 
+    is( $err, q{},
+            "generate report for $case->{label}"
     );
 
     if ( $opt{will_send} ) {
@@ -655,7 +655,7 @@ sub test_dispatch {
 
 sub _diag_output {
     my ( $stdout, $stderr ) = @_;
-    diag "STDOUT:\n$stdout\n\nSTDERR:\n$stderr\n"; 
+    diag "STDOUT:\n$stdout\n\nSTDERR:\n$stderr\n";
 }
 
 #--------------------------------------------------------------------------#
@@ -668,7 +668,7 @@ sub _ok_clone_dist_dir {
     my $dist_dir = File::Spec->rel2abs(
         File::Spec->catdir( qw/t dist /, $dist_name )
     );
-    my $work_dir = tempd() 
+    my $work_dir = tempd()
         or die "Couldn't create temporary distribution dir: $!\n";
 
     # workaround badly broken F::C::R 0.34 on Windows
@@ -696,9 +696,9 @@ sub _run_report {
 
     # automate CPAN::Reporter prompting
     local $ENV{PERL_MM_USE_DEFAULT} = 1;
-    
+
     my ($stdout, $stderr, $output, $exit_value);
-    
+
     $t::Helper::sent_report = undef;
     $t::Helper::comments = undef;
 
@@ -711,7 +711,7 @@ sub _run_report {
             if ( $phase eq 'test' ) {
                 system("$make");
             }
-            ($output, $exit_value) = 
+            ($output, $exit_value) =
                 CPAN::Reporter::record_command( $case->{command} );
             no strict 'refs';
             &{"CPAN::Reporter::grade_$phase"}(
@@ -721,7 +721,7 @@ sub _run_report {
                 $exit_value,
             );
         } => \$stdout, \$stderr;
-    }; 
+    };
     if ( $@ ) {
         diag "DIED WITH:\n$@";
         _diag_output( $stdout, $stderr );
@@ -750,7 +750,8 @@ BEGIN {
 }
 
 package Test::Reporter;
-use vars qw/$AUTOLOAD/;
+use vars qw/$AUTOLOAD $VERSION/;
+$VERSION = 999; # more than 1.54 (e.g. distfile exists)
 
 sub new { return bless {}, 'Test::Reporter::Mocked' }
 
@@ -760,11 +761,11 @@ use vars qw/$AUTOLOAD/;
 
 sub comments { shift; $t::Helper::comments = shift }
 
-sub send { 
-    shift; 
-    $t::Helper::sent_report = $t::Helper::comments; 
-    return 1 
-} 
+sub send {
+    shift;
+    $t::Helper::sent_report = $t::Helper::comments;
+    return 1
+}
 
 sub subject {
     my $self = shift;
@@ -786,15 +787,6 @@ sub transport {
     }
     return $mocked_data{transport};
 }
-  
-# must do this one manually so ->can('distfile') is true
-sub distfile {
-  my $self = shift;
-  if ( @_ ) {
-    $mocked_data{ distfile } = shift;
-  }
-  return $mocked_data{ distfile };
-}
 
 sub AUTOLOAD {
     my $self = shift;
@@ -0,0 +1,8 @@
+use strict;
+use Module::Build;
+
+Module::Build->new( 
+    module_name         => 'Bogus::Module',
+    dist_author         => 'David A. Golden <dagolden@cpan.org>',
+    create_makefile_pl  => 'traditional',
+)->create_build_script;
@@ -0,0 +1,22 @@
+# Note: this file was auto-generated by Module::Build::Compat version 0.03
+use ExtUtils::MakeMaker;
+WriteMakefile
+(
+          'PL_FILES' => {},
+          'INSTALLDIRS' => 'site',
+          'NAME' => 'Bogus::Module',
+          'EXE_FILES' => [],
+          'VERSION_FROM' => 'lib/Bogus/Module.pm',
+          'PREREQ_PM' => {}
+        )
+;
+
+package MY;
+sub test {};
+
+sub special_targets {
+  my ($self) = shift;
+  my $frag = $self->SUPER::special_targets();
+  $frag =~ s{\btest\b}{}ims;
+  return $frag;
+}
@@ -0,0 +1,6 @@
+package Bogus::Module;
+
+$VERSION     = "0.01";
+
+1; # modules must be true
+